支持的媒体编解码器
目前支持以下格式:
-
音频:MP3;包含未压缩PCM的AIFF;包含未压缩PCM的WAV;包含Advanced Audio Coding (AAC)音频的MPEG-4多媒体容器
-
视频:包含VP6视频和MP3音频的FLV;包含H.264/AVC (Advanced Video Coding)视频压缩的MPEG-4多媒体容器
注意:
您不得在设计半导体或寄存器传输级(RTL)或任何其他开发On2 VP6视频解码器半导体实现所需的类似级别的过程中集成On2 VP6视频解码器。
FLV容器由JavaFX SDK支持的平台上的媒体堆栈支持。以此格式编码的单个电影在支持的平台上无缝运行。服务器端需要设置标准的FLV MIME设置以启用媒体流。
MPEG-4多媒体容器也在JavaFX SDK支持的所有操作系统上受支持。在Mac OS X和Windows 7平台上,播放将正常工作,无需额外的软件。然而,Linux操作系统和早于Windows 7的Windows版本需要安装现成的第三方软件包,如Certified System Configurations页面中所述,该页面链接在Java SE下载页面上:http://www.oracle.com/technetwork/java/javase/downloads/
。AAC和H.264/AVC解码具有特定于平台的限制,如发布说明中所述,发布说明链接在http://www.oracle.com/technetwork/java/javase/downloads/
上。
对于某些音频和视频压缩类型的解码,依赖于操作系统特定的媒体引擎。JavaFX媒体框架不尝试处理所有这些本机引擎支持的多媒体容器格式和媒体编码。相反,该框架试图在支持JavaFX的所有平台上提供等效且经过良好测试的功能。
JavaFX媒体堆栈支持的一些功能包括以下内容:
-
带有MP3和VP6的FLV容器
-
MP3音频
-
带有AAC、H.264或两者的MPEG-4容器
-
HTTP、FILE协议支持
-
渐进式下载
-
寻找
-
缓冲进度
-
播放功能(播放、暂停、停止、音量、静音、平衡、均衡器)
HTTP Live Streaming 支持
通过添加 HTTP Live Streaming 支持,您现在可以使用 JavaFX Media 下载播放列表文件并播放视频或音频片段。媒体播放器现在能够根据播放列表文件和网络条件切换到备用流。对于给定的流,有一个播放列表文件和一组分段,流可以是 MP3 原始流或包含多路复用的 AAC 音频和 H.264 视频的 MPEG-TS。当流是静态文件时,可以按需播放流,当流实际上是实时源时,可以进行实时播放。在这两种情况下,流可以调整其比特率,对于视频,还可以调整其分辨率。
创建媒体播放器
JavaFX媒体概念基于以下实体。
-
Media - 媒体资源,包含有关媒体的信息,例如其源、分辨率和元数据
-
MediaPlayer - 提供播放媒体的控件的关键组件
-
MediaView - 用于支持动画、透明度和效果的节点对象
媒体功能的每个元素都可以通过JavaFX API获得。 图1-2显示了位于javafx.scene.media
包中的类。这些类是相互依赖的,可以组合使用来创建嵌入式媒体播放器。
MediaPlayer
类提供了控制媒体播放所需的所有属性和函数。您可以设置AUTO_PLAY
模式,直接调用play()
函数,或明确指定媒体应播放的次数。 VOLUME
变量和BALANCE
变量可用于调整音量级别和左右设置。音量级别范围从0到1.0(最大值)。平衡范围从最左边的-1.0连续到中心的0,最右边的1.0。
play()
、stop()
和pause()
函数控制媒体播放。此外,一组函数处理播放器执行以下操作时的特定事件:
-
缓冲数据
-
到达媒体的末尾
-
因未能及时接收数据而停止播放
-
遇到
MediaErrorEvent
类中定义的任何错误
MediaView
类扩展了Node
类,并提供了媒体播放器正在播放的媒体的视图。它主要负责效果和变换。它的mediaPlayer
实例变量指定了正在播放媒体的MediaPlayer
对象。其他布尔属性用于应用Node
类提供的特定效果,例如启用媒体播放器的旋转。
有关javafx.scene.media
包的更多信息,请参阅API文档
。