JavaFX MediaPlayer在Mac上使用mp4文件时口吃



要重现该问题,您可以使用JavaFX示例项目AdvancedMedia。将 flv 视频替换为 JavaFX 支持的编码类型的 mp4 视频。

编辑:我想也许人们在编辑样本时遇到了麻烦。只需将视频放在项目根文件夹中,然后将MEDIA_URL设置为new File("video.mp4").toURI().toString().

它在Windows平台上工作得很好。但是,在Mac上,视频在开始和结束之前卡顿。使用java -jar AdvancedMedia.jar在终端上运行项目时,它会显示以下消息:

AVF info: checkDecoderUsage, vaCodecString: <Gen6> 
AVF info: pp_hw_name: RenderingEngine, id: 3ea, m_pp_nowait: 1
AVF info: RingBufferPool wr:0, rd:108, reset:93, warning:0

我看到MacBook Pro,Air,i5/i7处理器等会发生此错误。有没有办法解决口吃/错误消息?

我测试了使用-Dprism.verbose=true运行,我看到了Windows和Mac平台之间的主要区别:在Windows上Prism platform init orderd3d sw,而在Mac上是es2 sw;Prism pipeline name分别是com.sun.prism.d3d.D3DPipelinecom.sun.prism.es2.ES2Pipeline

也许一个可能的解决方案是在Mac上使用相同的D3D管道?但是,如果使用-Dprism.order=d3d,sw运行,则会产生java.lang.ClassNotFoundException: com.sun.prism.d3d.D3DPipeline.

我还尝试使用-Xms选项增加 JVM 内存,但没有效果。因此,即使视频在其他平台上流畅播放,这似乎确实是一个编解码器问题。

我正在Mac上测试Windows生成的jar,所以现在我也尝试在Mac上构建AdvancedMedia示例,认为它可以有所作为,但没有任何改变。

似乎这更像是一个JavaFX错误报告,而不是一个问题。

有点跑题了,但我不得不说,在此之前,我为我的应用程序尝试了C++和 VLCj 方法,我只是因为 Mac 功能问题而更改了它......

我发现此错误发生在带有任何 H.264 编码视频的 Mac 上,无论文件扩展名如何。因此,如文档中所述,JavaFX 提供的唯一其他替代方法是使用 VP6 编码,这并不容易获得 - 请参阅我的另一个问题 - 但至少视频将流畅运行并且没有任何渲染错误消息。

相关内容

  • 没有找到相关文章

最新更新