DOC-09-01 JavaFX媒体入门

随着网络媒体内容的快速增长,音频和视频成为了互联网应用的不可或缺的一部分。拓宽传统媒体使用范围的想法导致了JavaFX媒体功能的产生,其功能的实现得益于一系列Java API。通过使用javafx.scene.media包,开发者可以在桌面窗口或者受支持平台的网页中创建具有回播放功能的媒体应用。

图 1-1 JavaFX应用的各种媒体使用方法的展示。

图1-1 媒体使用样例

9_1_1 media-functionality

JavaFX媒体特性支持的操作系统和JRE与CSC(Certified System Configurations)页面中的列表一致,该列表可以从Java SE的下载页面进行查看http://www.oracle.com/technetwork/java/javase/downloads/

支持的媒体编码

以下是目前支持的编码格式:

音频:MP3;包含非压缩PCM的AIFF;包含非压缩PCM的WAV;使用AAC音频的MPEG-4

视频:包含VP6视频和MP3音频的FLV;使用H.264/AVC视频压缩的MPEG-4

注意:你可能没有在半导体或者RTL(register transfer level,寄存器传输级)或者其他必要的On2 VP6视频解码器半导体引入的开发的相似等级的设计中整合On2 VP6视频解码器。

JavaFX SDK所支持平台上的媒体栈是支持FLV容器的。由此格式编码的单个视频是可以在支持的平台上无缝运行的。在服务器端需要标准FLV MIME设置以启用媒体流。

JavaFX SDK支持的所有操作系统上也是支持MPEG-4多媒体容器的。在Mac OS X和Windows 7平台上,回放功能是不需要其他软件的。但是在Linux或者比Windows 7更早的Windows上,是需要安装现成的第三方软件包来实现,软件包可以在CSC页面中找到,可以从Java SE的下载页面找到,http://www.oracle.com/technetwork/java/javase/downloads/,AAC和H.264的解码有依赖某些平台的局限性,在现有的发行说明中有对应描述http://www.oracle.com/technetwork/java/javase/downloads/

一些音频和视频压缩类型的解码依赖于操作系统专用的媒体引擎。JavaFX媒体框架并不试图使用本地引擎解决所有多媒体容器格式和媒体解码,而是提供了在所有JavaFX支持平台上经过测试的引擎。

以下是JavaFX媒体栈支持的一些特性:

● 包括MP3和VP6的FLV容器

● MP3音频

● 包括AAC及264的MPEG-4容器

● 支持HTTP,FILE协议

● 渐进式下载

● 拖动

● 进度缓冲

● 播放功能(播放,暂停,停止,音量调节,静音,平衡调节,均衡器)

HTTP实时流媒体支持

由于增加了HTTP流媒体的支持,可以通过JavaFX媒体下载播放列表文件和播放视频音频的片段。媒体播放器可以切换播放列表文件中的备选播放流并且依赖于网络条件。对于一个指定的流,其中包含一个播放列表文件和一系列片段。这个流可以是一个MP3原生流或者是包含复用AAC音频和H.264视频的MPEG-TS。当媒体流是一个静态文件时,媒体流经过请求后便可立即播放,或者当媒体流支持在线播放时,可以立即在线播放。在上述两种情况下,媒体流可以调整视频的比特率和分辨率。

创建一个媒体播放器

JavaFX媒体的概念是基于以下实体:

媒体-一个包括媒体的一些信息(如源地址,分辨率,元数据等)的媒体源

媒体播放器-提供媒体播放控制功能的重要组件

媒体界面-一个支持动画,透明等一些特效的节点对象

媒体功能的每个组件都由JavaFX API提供。

图1-2展示了javafx.scene.media包中的类文件。这些类互相依赖并且通过组合使用来创建一个嵌入式的媒体播放器。

图1-2 javafx.scene.media包中的类文件

9_1_2 mediafxapi

MediaPlayer类提供了所有需要控制媒体播放的属性和功能。你可以设置自动播放(AUTO_PLAY)模式,直接调用播放功能(play()),或者精确设定媒体的播放次数。音量(VOLUME)与平衡(BALANCE)变量分别可以用来调节音量大小和左右声道。音量调节的范围是0到1.0(最大值)。平衡的范围为连续值,从-1.0是左声道,0为左右声道平衡,一直到1.0为右声道。

播放(start()),停止(stop())和暂停(pause())功能用来控制媒体播放。另外有一些功能是当播放器做以下操作时,处理特定的事件:

● 缓冲数据

● 媒体播放结束

● 因为接收数据不够快而卡住

● 遇到MediaErrorEvent类定义的任何错误

MediaView类继承Node类并提供了播放器播放媒体时的界面。主要功能是一些特效和转换。其mediaPlayer实例变量指定了播放器正在播放的mediaPlayer对象。其他布尔属性用于应用由Node类提供的特定效果,例如媒体播放器的旋转。

可以查看API文档来了解更多关于javafx.scene.media包的信息。

打赏一下
支付宝
微信
除非注明,博客文章均为原创,转载请标明文章地址
本文地址: http://www.javafxchina.net/blog/2015/08/javafx_media_introduction/
百度已收录