【多媒体】Java实现MP4和MP3音视频播放器【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实现音视频播放器的例程:

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"; //private static final String PATH = "D:/Temp/大约在冬季.mp3";@Overridepublic 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的自动播放功能来播放视频。
说明:
在JDK中不包含JavaFX的时代,Java编程如果没有第三方库的支持是无法正常播放mp3音频文件的。但是有了JavaFX 2.0 一切皆有可能。在本例程中,如果提供一个mp3的文件路径,就可正常播放音频文件。修改一行代码,就能播放音乐。
private static final String PATH = “D:/Temp/大约在冬季.mp3”;

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

JavaFX 2.0 支持的音频和视频格式如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/39751.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

拒绝信息差!一篇文章说清Stable Diffusion 3到底值不值得冲

前言 就在几天前,Stability AI正式开源了Stable Diffusion 3 Medium(以下简称SD3M)模型和适配CLIP文件。这家身处风雨飘摇中的公司,在最近的一年里一直处于破产边缘,就连创始人兼CEO也顶不住压力提桶跑路。 即便这样&…

[leetcode]minimum-absolute-difference-in-bst 二叉搜索树的最小绝对差

. - 力扣(LeetCode) /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(null…

LeetCode 196, 73, 105

目录 196. 删除重复的电子邮箱题目链接表要求知识点思路代码 73. 矩阵置零题目链接标签简单版思路代码 优化版思路代码 105. 从前序与中序遍历序列构造二叉树题目链接标签思路代码 196. 删除重复的电子邮箱 题目链接 196. 删除重复的电子邮箱 表 表Person的字段为id和email…

昇思MindSpore学习总结七——模型训练

1、模型训练 模型训练一般分为四个步骤: 构建数据集。定义神经网络模型。定义超参、损失函数及优化器。输入数据集进行训练与评估。 现在我们有了数据集和模型后,可以进行模型的训练与评估。 2、构建数据集 首先从数据集 Dataset加载代码&#xff0…

在windows上安装objection

安装命令pip install objection -i https://mirrors.aliyun.com/pypi/simple hook指定进程 objection -g 测试 explore 进程名不定是包名,也可能是app名字,如“测试”就是app的名字 若出现如下错误,说明python 缺少setuptools 直接安装setu…

秋招突击——设计模式补充——单例模式、依赖倒转原则、工厂方法模式

文章目录 引言正文依赖倒转原则工厂方法模式工厂模式的实现简单工厂和工厂方法的对比 抽线工厂模式最基本的数据访问程序使用工厂模式实现数据库的访问使用抽象工厂模式的数据访问程序抽象工厂模式的优点和缺点使用反射抽象工厂的数据访问程序使用反射配置文件实现数据访问程序…

检索增强生成RAG系列6--RAG提升之查询结构化(Query Construction)

系列5中讲到会讲解3个方面RAG的提升,它们可能与RAG的准确率有关系,但是更多的它们是有其它用途。本期来讲解第二部分:查询结构化(Query Construction)。在系列3文档处理中,我们着重讲解了文档解析&#xff…

能保存到相册的风景视频在哪下载?下载风景视频网站分享

在当今以视觉为核心的时代,高清美丽的风景视频不仅能够丰富我们的日常生活,还能提供心灵上的慰藉。无论是为了制作视频项目,还是仅仅想要珍藏一些精美的风景画面,获取高质量的风景视频素材显得尤为重要。许多人可能会问&#xff1…

PTrade量化软件常见问题整理系列2

一、研究界面使用get_fundamentals函数报错:error_info:获取token失败? 研究界面使用get_fundamentals函数报错:error_info:获取token失败? 1、测试版本202202.01.052,升级202202.01.051版本后,为了解决不…

在虚拟仿真中学习人工智能,可以达到什么目标?

人工智能已经成为引领社会创新的关键力量,想要在这个充满机遇的领域中脱颖而出,掌握扎实的专业技能和积累丰富的实践经验至关重要。然而,许多学习者在追求这一目标的过程中面临着几个主要问题:专业技术掌握有难度、实践经验积累存…

linux中awk,sed, grep使用

《linux私房菜》这本书中将sed和awk一同归为行的修改这一点,虽然对,但不利于实际处理问题时的思考。因为这样的话,当我们实际处理问题时,遇到比如说统计文本打印内容时,我们选择sed还是awk进行处理呢? 也因…

​香橙派AIpro测评:usb鱼眼摄像头的Camera图像获取

一、前言 近期收到了一块受到业界人士关注的开发板"香橙派AIpro",因为这块板子具有极高的性价比,同时还可以兼容ubuntu、安卓等多种操作系统,今天博主便要在一块832g的香橙派AI香橙派AIpro进行YoloV5s算法的部署并使用一个外接的鱼眼USB摄像头…

React 中如何使用 Monaco

Monaco 是微软开源的一个编辑器,VSCode 也是基于 Monaco 进行开发的。如果在 React 中如何使用 Monaco,本文将介绍如何在 React 中引入 Monaco。 安装 React 依赖 yarn add react-app-rewired --dev yarn add monaco-editor-webpack-plugin --dev yarn…

学习和发展人工智能:新兴趋势和成功秘诀

人工智能(AI)继续吸引组织,因为它似乎无穷无尽地提高生产力和业务成果。在本博客中,了解学习和发展(L&D)部门如何利用人工智能改进流程,简化工作流程? 学习与发展(L&D)部门领导开始探索如何提高和支持人工智能能力的劳动…

1-认识网络爬虫

1.什么是网络爬虫 ​ 网络爬虫(Web Crawler)又称网络蜘蛛、网络机器人,它是一种按照一定规则,自动浏览万维网的程序或脚本。通俗地讲,网络爬虫就是一个模拟真人浏览万维网行为的程序,这个程序可以代替真人…

工业智能网关在现代工业生产中的重要性-天拓四方

工业智能网关是一款具备挖掘工业设备数据并接入到自主开发的云平台的智能嵌入式网络设备。它具备数据采集、协议解析、边缘计算,以及4G/5G/WiFi数据传输等功能,并能接入工业云平台。这种网关不仅支持采集PLC、传感器、仪器仪表和各种控制器,还…

iss文件本机可以访问,其他电脑无法访问解决

1.搜索的时候有很多答案,总结就是2种 引用来自这位大佬的博客跳转 2.我实际解决了的方法 将这里的ip地址修改为你局域网wifi的ip 如何看自己wifi的ip,大家自行百度!

linux中与网络有关的命令

本文的命令总览 ifconfig命令 在 Linux 系统中,ifconfig 命令用于配置和显示网络接口的信息,包括 IP 地址、MAC 地址、网络状态等。同时我们也可以利用ifconfig 命令设置网络接口对应的ip地址,子网掩码等 当你使用 ifconfig 命令时&#xf…

UE5.4新功能 - Texture Graph上手简介

TextureGraph是UE5.4还在实验(Experimental)阶段的新功能,该功能旨在材质生成方面达到类似Subtance Designer的效果,从而程序化的生成一些纹理。 本文就来简要学习一下。 1.使用UE5.4或以上版本,激活TextureGraph插件 2.内容视图中右键找到…

苹果电脑虚拟机运行Windows Mac环境安装Win PD19虚拟机 parallels desktop19虚拟机安装教程免费密钥激活

在如今多元的数字时代,我们经常需要在不同的操作系统环境下进行工作和学习。而对于 Mac 用户来说,有时候需要在自己的电脑上安装 Windows 操作系统,以体验更多软件及功能,而在 Mac 安装 Windows 虚拟机是常用的一种操作。下面就来…