向 JavaFX 2.2 添加其他视频编解码器/DVD 支持背景研究其他方法
更新:
由于JFX的媒体方面已经开源,我自己已经研究了这一点,这确实是可能的,但需要更改和重建JFX源代码(Java和C部分)。对于任何想要尝试的人来说,这个过程都在这里描述 - 我在该示例中添加了MKV支持,但对于其他插件来说应该非常相似。
因此,这个问题的其余部分主要是历史性的,但我把它留在这里供参考。
背景
到目前为止,我一直在使用VLCJ在我的应用程序中播放视频。它可以工作,但是如果可能的话,我想看看我是否可以通过迁移到JavaFX来实现对常见编解码器的类似级别的支持,并节省多个VM的大量麻烦,例如VLCJ需要可靠地播放多个视频。我不会在这里讨论,但如果你对细节感兴趣,请参阅我对这个问题的回答。还有跨平台兼容性的问题,它可以在Mac和Linux上工作,但我还没有弄清楚如何让它在Mac上显示(我相信有一些安全措施可以防止一个进程访问另一个进程的本机组件,但这再次超出了这个问题的范围。
它归结为这样一个事实,即虽然它可以工作,但使用多个VM并稳定地桥接它们(如果有另一种更容易的解决方案)需要大量的维护和麻烦。VLC确实对玩几乎任何东西都有一个非常传奇的支持水平,这就是为什么我到目前为止一直使用它,我有兴趣看看我是否可以在JavaFX中获得类似的结果 - 或者至少它是否可以提供以跨平台方式做到这一点的方法。
研究
JavaFX 2.0 支持视频 - 太棒了!但目前官方线路是它支持“包含VP6视频和MP3音频的FLV”。有没有办法扩展它以添加对更多编解码器的支持?我不想支持硬编解码器,它更像是一个尽可能多的情况,所以我正在寻找一种可扩展的方法来处理上述问题。
我想知道它是否会为本机安装在机器上的编解码器播放视频,并且它只是不这样宣传自己(因为该功能显然取决于机器而不是跨平台)。但是没有骰子,我已经尝试了许多常见的格式,它确实拒绝播放除它所说的以外的任何东西。
从JavaFX 1.3来看,它还支持其他依赖于平台的编解码器,具体取决于它的安装位置。有没有办法在JavaFX 2中获得这种行为?还是计划在后续发布?我无法在路线图上找到有关它的任何信息或Oracle对此的任何评论。
我从广泛的搜索中唯一能找到的东西就是在这里,这意味着它可能是可能的,但似乎没有人知道如何。我也想知道它是否基于GStreamer,为什么默认情况下也不包括GStreamer支持的所有格式?
在使用JavaFX播放DVD方面,我绝对无处可去,所以我假设目前这只是一个禁忌。如果有人有任何想法或信息,我全都听见了。
其他方法
我半信半疑的一种方法是将JMC jar从旧的JavaFX中撬开,如这里所述,并试图使其与JavaFX 2一起工作。我不认为有人对这种方法或类似的东西有任何运气?
所有失败的事情,如果有人有任何信息或链接,如果/何时支持其他编解码器将支持开箱即用,那么我也有兴趣听到这一点。或者,如果有人对甲骨文的某个人有任何联系方式,我也可以问,这也将不胜感激!一段时间以来,我一直渴望在Java中提供体面的视频支持,我想这归结为试图弄清楚JavaFX是否是这个问题的答案,或者只是另一个半心半意的尝试,永远不会比它目前所做的事情更多!我希望不是后者,但我还没有看到太多的东西来证明情况确实如此。