更新:
由于 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 方面,我绝对无处可去,所以我假设目前这只是一个不行。如果有人确实有任何想法或信息,我会全神贯注。
其他方法
我想知道的一种方法可能是从旧的 JavaFX 中剔除 JMC jar,如此处所述,并试图让它与 JavaFX 2 一起工作。我认为没有人对这种方法或类似的东西有任何运气?
所有事情都失败了,如果有人有任何信息或链接说明是否/何时支持开箱即用的其他编解码器,那么我也很想听听。或者,如果有人有甲骨文某人的任何联系方式,我也可以问一下,我将不胜感激!一段时间以来,我一直渴望在 Java 中提供体面的视频支持,我想这归结为试图弄清楚 JavaFX 是否是这个问题的答案,或者只是另一个半心半意的尝试,它永远不会比它播放更多目前可以!我希望不是后者,但我还没有看到太多可以证明是这样的。