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

news2024/12/30 1:59:12

在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";
	
    @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的自动播放功能来播放视频。
说明:
在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.coloradmin.cn/o/1889685.html

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

相关文章

Spring Boot2.x教程:(四)Spring Boot2.6及之后版本整合Knife4j的问题

Spring Boot2.6及之后版本整合Knife4j的问题 1、概述2、问题出现原因及解决办法3、拓展3.1、为什么发生这种变化 4、总结 大家好,我是欧阳方超,可以扫描下方二维码关注我的公众号“欧阳方超”,后续内容将在公众号首发。 1、概述 今天在2.7…

66.WEB渗透测试-信息收集- WAF、框架组件识别(6)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:65.WEB渗透测试-信息收集- WAF、框架组件识别(5) 关于waf的一些识…

day62--若依框架(基础应用篇)

若依搭建 若依版本 官方 若依官方针对不同开发需求提供了多个版本的框架,每个版本都有其独特的特点和适用场景: 前后端混合版本:RuoYi结合了SpringBoot和Bootstrap的前端开发框架,适合快速构建传统的Web应用程序,其…

ByteTrack论文阅读笔记

目录 ByteTrack: Multi-Object Tracking by Associating Every Detection Box摘要INTRODUCTION — 简介BYTE算法BYTE算法用Python代码实现实验评测指标轻量模型的跟踪性能 总结SORT算法简介ByteTrack算法和SORT算法的区别 ByteTrack: Multi-Object Tracking by Associating Eve…

idm 支持断点续传吗 idm 断点续传如何使用 idm断点续传怎么解决 idm下载中断后无法继续下载

断点续传功能,让我再也不会惧怕下载大型文件。在断点续传的帮助下,用户可以随时暂停下载任务,并在空闲时继续之前的下载进程。下载文件不惧网络波动,断点续传让下载过程更稳定。有关 idm 支持断点续传吗,idm 断点续传如…

css---before和after伪元素

1.什么是伪元素 伪元素不是真正的页面元素,html没有对应的元素,但是其所有用法和表现行为与真正的页面元素一样,可以对其使用如页面元素一样的CSS样式,表面上看上去貌似是页面的某些元素来展现,实际上CSS样式展现的行…

京东e卡怎么用?

京东618过去后,就没有多大购物欲望了,最后导致我手里还有好几张200块钱面值的e卡没地方用 本来说送朋友,但是又感觉面值太小了 最后还是在收卡云上把提取出来了,主要回收价格不错,而且到账也快,很方便

TI电池电量计应用指导

前言: 电池电量计应用指导,来源:TI,因PDF有200页,在文尾附有目录;上传提示资源重复,请自行下载,找不到的可私信。 电池充电曲线,红色为电压,蓝色为电流 图2.10 匹配化学 ID 所需要的电压电流曲…

大模型补贴政策来了!!!

广州琶洲人工智能与数字经济试验区管理委员会 广州市海珠区科技工业商务和信息化局关于印发广州市海珠区建设人工智能大模型应用示范区实施细则的通知 各有关单位: 为进一步促进海珠区人工智能大模型产业发展,加快建设人工智能大模型应用示范区&#xf…

启动游戏提示缺少XAPOFX1_5.dll怎么处理?七个解决方法教你快速修复

xapofx1_5.dll是什么,打开软件或软件突然出现找不到xapofx1_5.dll文件,相信各位都很疑惑为什么会出现这个问题。今天我就教大家遇到这个问题怎么解决,和介绍xapofx1_5.dll文件全面分析以及xapofx1_5.dll多种解决方法! 一、xapofx1…

页面替换菜单栏图标

图标素材库:https://www.iconfont.cn/?spma313x.collections_index.i3.2.51703a81hOhc8B 1、找到自己喜欢的图标下载svg 2、添加到icons中 3、在components中创建对应的vue页面添加对应图标svg中代码 4、在router中引入 5、在对应的菜单下使用图标

el-tree懒加载数据改变后不能实时刷新问题

简介 设置lazy后&#xff0c;加载数据通过load获取&#xff0c;如果外部搜索条件改变&#xff0c;数据源变动后&#xff0c;el-tree仍然是老数据不更新最新数据&#xff0c;因为el-tree加载后会缓存&#xff0c;需要主动设置data去更新最新数据 效果 源码 <!DOCTYPE html…

微信小程序云开发引入车牌识别踩坑

创造灵感 因为我写的是一个汽车轮胎商城小程序,要记录客户车牌信息,用到了车牌识别,小程序的插件服务里面有ORC插件支持,只需要把这个插件的车牌识别引进来就能用,这个插件每天有100次的免费识别,基本就够用了,下面把引入的踩坑过程记录一下.如果有需要汽车轮胎的也可以到我们…

softmax从零开始实现

softmax从零开始实现 代码结果 代码 import numpy as np import torch import torchvision import torchvision.transforms as transforms from torch.utils import data# H,W,C -> C,H,W mnist_train torchvision.datasets.FashionMNIST(root"./data", trainTr…

《石化技术 》是什么级别的期刊?是正规期刊吗?能评职称吗?

问题解答 问&#xff1a;《石化技术 》是不是核心期刊&#xff1f; 答&#xff1a;不是&#xff0c;是知网收录的第一批认定学术期刊。 问&#xff1a;《石化技术 》级别&#xff1f; 答&#xff1a;国家级。主管单位&#xff1a;中国石油化工集团有限公司 主办单位&…

虚拟机下基于海思移植QT(一)——虚拟机下安装QT

0.参考资料 1.海思Hi3516DV300 移植Qt 运行并在HDMI显示器上显示 2.搭建海思3559A-Qt4.8.7Openssl开发环境 1.报错解决 通过下面命令查询 strings /lib/x86_64-linux-gnu/libc.so.6 | grep GLIBC_通过命令行没有解决&#xff1a; sudo apt install libc6-dev libc6参考解决…

内容监管与自由表达:Facebook的平衡之道

在当今数字化信息社会中&#xff0c;社交媒体平台不仅是人们交流和获取信息的主要渠道&#xff0c;也是自由表达的重要舞台。Facebook&#xff0c;作为全球最大的社交网络平台&#xff0c;连接了数十亿用户&#xff0c;形成了一个丰富多样的信息生态。然而&#xff0c;如何在维…

【小白教学】-- 安装Ubuntu-20.04系统

下载 Ubuntu-20.04 镜像 具体如何下载镜像&#xff0c;请移驾我上一篇文章。使用清华大学开源镜像站下载。https://zhuanlan.zhihu.com/p/706444837 制作 Ubuntu-20.04 系统盘 安装软件 UltralSO 开始制作系统盘 第一步&#xff0c;插入一个 u 盘&#xff0c;启动软件&#x…

博客的部署方法论

博客写完后&#xff0c;当然是要发布到网络上的。如果想要部署到服务器上&#xff0c;则需编译构建成静态文件&#xff0c;然后将其上传到服务器上的路径&#xff08;该路径由我们自己决定&#xff09;&#xff0c;然后在 web 服务器&#xff08;Nginx 等&#xff09;上配置访问…

1688商品点击率和转化上不去,这9个细节你肯定没优化!

一、点击率上不去的原因 1、主图设计不佳 ✘问题&#xff1a;主图不够吸引人&#xff0c;无法迅速抓住顾客的注意力。 ✔解决方案&#xff1a; 通过店雷达主图分析&#xff0c;查询市场上目前在此关键词下的所有商品主图&#xff0c;一键对比多个关键销售指标数据&#xff…