初学了一段时间Java。想做一个应用程序,程序只需要播放一个本地视频,MP4格式,求教怎么做

初学了一段时间Java。想做一个应用程序,程序只需要播放一个本地视频,MP4格式,求教怎么做,第1张

使用javafx的Media,MediaPlayer,MediaView。代码如下:

import javaioFile;

import javafxapplicationApplication;

import javafxbeansbindingBindings;

import javafxbeanspropertyReadOnlyProperty;

import javafxbeansvalueObservableValue;

import javafxeventActionEvent;

import javafxgeometryPos;

import javafxsceneScene;

import javafxscenecontrolButton;

import javafxscenecontrolMenu;

import javafxscenecontrolMenuBar;

import javafxscenecontrolMenuItem;

import javafxscenecontrolSlider;

import javafxsceneimageImage;

import javafxsceneimageImageView;

import javafxscenelayoutBorderPane;

import javafxscenelayoutHBox;

import javafxscenelayoutPane;

import javafxscenelayoutVBox;

import javafxscenemediaMedia;

import javafxscenemediaMediaPlayer;

import javafxscenemediaMediaPlayerStatus;

import javafxscenemediaMediaView;

import javafxstageFileChooser;

import javafxstageFileChooserExtensionFilter;

import javafxstageStage;

import javafxutilDuration;

public class App extends Application {

private MediaView mediaView;

private Slider processSlider;

private static final Object AUTO = new Object(), MANUAL = new Object();

public static void main(String[] args) {

launch(args);

}

@Override

public void start(Stage primaryStage) throws Exception {

primaryStagesetTitle("javafx视频播放器");

        

        BorderPane root = new BorderPane();

        // 菜单栏

        initMenu(root);

        // 视频播放控件

        mediaView = initMediaView(root);

        // 视频功能控件

        initMediaControllView(root);

        

        primaryStagesetScene(new Scene(root, 600, 400));

        primaryStagesetOnCloseRequest(event -> Systemexit(0));

        primaryStageshow();

}

private MenuBar initMenu(final BorderPane parent) {

        Menu menu = new Menu("菜单");

        MenuItem item = new MenuItem("打开");

        itemsetOnAction(event -> {

         FileChooser chooser = new FileChooser();

         choosersetTitle("选择视频文件");

         choosergetExtensionFilters()add(new ExtensionFilter("视频文件", "mp4", "flv"));

         File file = choosershowOpenDialog(parentgetScene()getWindow());

         if (file != null) {

         MediaPlayer player = mediaViewgetMediaPlayer();

         // 关闭当前的player

         if (player != null) {

         playerstop();

         playerdispose();

         }

         processSlidersetValue(0);

         // 创建一个新的player并自动播放

         player = new MediaPlayer(new Media(filetoURI()toString()));

         playercurrentTimeProperty()addListener(this::mediaProcessChanged);

         playersetAutoPlay(true);

         mediaViewsetMediaPlayer(player);

         }

        });

        menugetItems()add(item);

        

        item = new MenuItem("退出");

        itemsetOnAction(event -> parentgetScene()getWindow()hide());

        menugetItems()add(item);

        

        MenuBar menuBar = new MenuBar(menu);

        parentsetTop(menuBar);

        return menuBar;

}

private MediaView initMediaView(final BorderPane parent) {

        MediaView view = new MediaView();

        Pane pane = new Pane(view);

        parentsetCenter(pane);

        // 视频宽高可随着窗口变化而自动缩放

        viewfitWidthProperty()bind(BindingsselectDouble(viewparentProperty(), "width"));

        viewfitHeightProperty()bind(BindingsselectDouble(viewparentProperty(), "height"));

        viewsetPreserveRatio(true);

        

return view;

}

private void initMediaControllView(final BorderPane parent) {

VBox bottom = new VBox(10);

bottomsetAlignment(PosCENTER);

parentsetBottom(bottom);

Slider slider = new Slider(0, 100, 0);

slidervalueProperty()addListener(this::processSliderChanged);

// slidersetOnMouseClicked(this::processSliderClicked);

bottomgetChildren()add(slider);

processSlider = slider;

HBox hbox = new HBox(10);

bottomgetChildren()add(hbox);

hboxsetAlignment(PosCENTER);

Button btn = new Button(null, new ImageView(loadImage("pausepng")));

btnsetOnAction(this::pauseOrPlay);

hboxgetChildren()add(btn);

btn = new Button(null, new ImageView(loadImage("stoppng")));

btnsetOnAction(this::stopPlay);

hboxgetChildren()add(btn);

}

private static Image loadImage(String resPath) {

return new Image(ThreadcurrentThread()getContextClassLoader()getResourceAsStream(resPath));

}

private void pauseOrPlay(ActionEvent event) {

MediaPlayer player = mediaViewgetMediaPlayer();

if (player == null) {

return;

}

Status status = playergetStatus();

if (status == StatusREADY || status == StatusPAUSED) {

playerplay();

((Button) eventgetTarget())setGraphic(new ImageView(loadImage("pausepng")));

} else if (status == StatusPLAYING) {

playerpause();

((Button) eventgetTarget())setGraphic(new ImageView(loadImage("playpng")));

}

}

private void stopPlay(ActionEvent event) {

MediaPlayer player = mediaViewgetMediaPlayer();

if (player == null) {

return;

}

playerstop();

}

// private void processSliderClicked(MouseEvent event) {

// Slider slider = (Slider) eventgetSource();

// if (mediaViewgetMediaPlayer() != null) {

// Duration d = mediaViewgetMediaPlayer()getTotalDuration()multiply(slidergetValue() / slidergetMax());

// mediaViewgetMediaPlayer()seek(d);

// }

// }

private void processSliderChanged(ObservableValue< extends Number> observable, Number oldValue, Number newValue) {

Slider slider = (Slider) ((ReadOnlyProperty< extends Number>) observable)getBean();

if (slidergetUserData() == AUTO) { // 进度条是自动改变的,因此不用设置播放器

slidersetUserData(null);

return;

}

if (mediaViewgetMediaPlayer() != null) {

slidersetUserData(MANUAL);

Duration d = mediaViewgetMediaPlayer()getTotalDuration()multiply(newValuedoubleValue() / slidergetMax());

mediaViewgetMediaPlayer()seek(d);

}

}

private void mediaProcessChanged(ObservableValue< extends Duration> observable, Duration oldValue, Duration newValue) {

if (processSlidergetUserData() == MANUAL) { // 手动点击进度条

processSlidersetUserData(null);

return;

}

MediaPlayer player = (MediaPlayer) ((ReadOnlyProperty< extends Duration>) observable)getBean();

processSlidersetUserData(AUTO);

processSlidersetValue(newValuetoMillis() / playergetTotalDuration()toMillis()  100);

}

}

你的import错了,没有javafxui这个包。

你看一下javafx的API:

>

ImageIcon img=new ImageIcon("images/1jpg");//其中images是项目下的文件夹,你注意存放的位置

别弄错了,错了就显示不出来了。

thissetIconImage(imggetImage());

一,瘦客户端,富客户端简介

富客户端RIA开发可以有多种,主要的有 MS C# Silverlight, Adobe Flash/Flex,Oracle Java JavaFX,有些运行在浏览器中,有些运行在浏览器外;

瘦客户端主要是指 HMTL+JS+CSS 在浏览器中运行的系统。

二,JavaFX 环境搭建

目前很多游戏或系统还很多使用富客户端开发,这里介绍Java 的 JavaFX ,使用JavaFX开发,首先就是开发环境的搭建,JavaFX的搭建环境需要如下:

1,java JDK ,是运行java必备的环境,安装后还设置系统环境变量等,使用 J2SE 7+版,

2,Eclipse ,优秀的 Java 的集成开发环境,使用 V372 版本,

3,javaFX 插件 JavaFX Scene Builder 10,用来开发界面UI,即 fxml 文件的生成,支持随见即所得的效果,

4,javaFX 插件下载后安装到Eclipse开发环境中,如何安装具体忘了,可以参考 JavaFX 工具安装和用法介绍 >

1javaFX也是像applet一样嵌入到页面中才能在web应用程序中运行,但是你需要先将自己的程序使用JavaFX脚本编译器将JavaFX脚本编译成Java Applet,然后发布到网页中

2用netbeans开发的话,就很方便了,在项目名上右键属性,选run,就可以看到浏览器、手机、web start等选项,你可以把你的程序任意发布了。

显示的错误

点击 Project->Properties

如图所示

选择API

把第二个选择项(Forbidden reference)改为Ignore

应用

好了

当我们完成了MyScene类后,可以开始写Java的主程序了,这是个标准的Swing程序中调用JavaFX代码如下:

package swingtest; / JavaFXToSwingTestjava >

以上就是关于初学了一段时间Java。想做一个应用程序,程序只需要播放一个本地视频,MP4格式,求教怎么做全部的内容,包括:初学了一段时间Java。想做一个应用程序,程序只需要播放一个本地视频,MP4格式,求教怎么做、javaFX helloword问:" 软件包 javafx.ui 不存在"、idea 开发 javaFX 修改编译后的文件图标等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9698957.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存