【多媒体】Java实现MP4视频播放器【JavaFX】【音视频播放】

在Java中播放视频可以使用多种方案,最常见的是通过Swing组件JFrame和JLabel来嵌入JMF(Java Media Framework)或Xuggler。不过,JMF已经不再被推荐使用,而Xuggler是基于DirectX的,不适用于跨平台。而且上述方案都需要使用第三方库。

在JDK 8.0版本中,一个最简单的视频播放器跨平台解决方案是使用JavaFX,它提供了MediaPlayer类来播放视频。

JavaFX 最初是由 Oracle 推出的一个用于开发富客户端应用程序的框架,它提供了丰富的用户界面控件、布局容器、3D图形绘制、媒体播放和动画等功能,旨在取代较旧的 Swing 框架。JavaFX 于 2007 年推出,2011 年 10 月发布了2.0 版本。JavaFX 2.0 的一个优点是适用于跨平台,而且可以完全用 Java 语言编写代码。

2014年发布的JDK 8.0就包含了JavaFx 2.0 版本。然而,随着时间的发展和技术的变迁,JavaFx 2.0并未达到预期目标,而且在与其他的技术标准竟争中处于下风。从 JDK 11 开始,Oracle 决定不再将 JavaFX 包含在 JDK 中,如有需要JavaFX必须单独下载和使用。

尽管如此,JavaFX 仍然是一个强大的开发工具,开发者可用它来设计、编写、测试、调试和部署富客户端程序,支持跨平台使用。

以下是在JDK 8.0版本使用JavaFX实现视频播放器的例程:

cpp 复制代码
import java.io.File;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.stage.Stage;
public class SimpleVideoPlayer extends Application {
	private static final String PATH = "D:/Temp/太极拳.mp4"; 
	
    @Override
    public void start(Stage stage) {
        // 创建媒体播放器
        Media media = new Media(new File(PATH).toURI().toString());

        MediaPlayer mediaPlayer = new MediaPlayer(media);
        mediaPlayer.setAutoPlay(true);  // 设置自动播放

        // 创建媒体视窗
        MediaView mediaView = new MediaView(mediaPlayer);

        // 创建根框架窗口布局
        
        StackPane root = new StackPane();
        root.getChildren().add(mediaView);

        // 创建场景
        Scene scene = new Scene(root, 800, 600);
        
        // 设置舞台
        stage.setScene(scene);

        stage.setTitle("最简视频播放器");
        stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

在上面的代码中,我们首先创建了一个媒体Media对象,其中PATH表示视频文件的路径。然后,我们创建了一个媒体播放器MediaPlayer对象,并将媒体Media对象作为参数传入。接下来,我们创建了一个MediaView对象,用于显示视频内容。然后,我们创建了一个根框架窗体和场景,并将MediaView添加到场景中。最后,我们设置舞台。通过设置MediaPlayer的自动播放功能来播放视频。

下面是播放页面的截屏:


说明:

很多博文都认为,JavaFX支持多种视频格式,包括常见的MP4、AVI、FLV等格式。下面是我的测试情况:MP4格式的视频是能播放,但有一些MP4视频未显示图像也没报错,原因未知。测试了AVI、RMVB格式的视频,都不能正常播放,报"不支持的格式"例外错误。

相关推荐
向上的车轮7 小时前
Apache Camel 与 Spring Integration的区别是什么?
java·spring·apache
nsjqj7 小时前
JavaEE初阶:计算机是如何工作的
java·java-ee
URBBRGROUN4677 小时前
Spring AI Alibaba入门
java·人工智能·spring
她和夏天一样热7 小时前
【实战篇】设计模式在开发中的真实应用
java·开发语言·设计模式
小帅学编程7 小时前
设计模式笔记
java
EasyDSS7 小时前
解析RTMP视频推流平台EasyDSS如何实现无人机推流直播
音视频·无人机
ss2737 小时前
线程池工作机制:从任务提交到执行的完整决策流程
java·开发语言
yaoxin5211238 小时前
276. Java Stream API - 使用 flatMap 和 mapMulti 清理数据并转换类型
java·开发语言·windows
Vic101018 小时前
【无标题】
java·数据库·分布式