Java中的媒体播放器库

我正在评估用Java播放音频/video的库。 它不需要是100%Java ; Java绑定到本机库是完全可以的。 可以从Java控制的外部应用程序也可以,只要它可以在Java组件上呈现video。

目标平台是Linux。 Windows支持是一个加号,但不是必需的。

我使用VLCj绑定玩VLC,一般情况下效果很好,但在压力下偶尔会崩溃。 我也在奴隶模式下使用mplayer,看起来不错。 但我也想评估其他选项。

这些是要求:

  • 使用RTSP通过RTP实时播放H.264,MPEG4。 MJPEG通过HTTP获得额外积分。
  • 能够在Java(Swing或AWT)组件上呈现video
  • 开源,积极维护
  • 稳定,坚如磐石

建议? 建议吗?

好吧,我上个月花了几个选项玩这些结果:

  1. VLC 。 这是我的第一个想法,因为每个人都在说它“扮演一切”。 我使用了VLCj Java绑定和内置远程接口 ( -I rc )。 我发现这一般工作得很好,但有一些问题。 我一直看到重载下的偶然崩溃(不是VLCj的错误,因为直接使用二进制时也会发生这种情况)。 此外,我发现与其他选项相比,内存消耗相对较高。

  2. MPlayer 。 根据我的经验,这实际上比VLC表现更好,没有崩溃,内存消耗更低。 没有Java绑定,尽管从模式工作得很好。

  3. GStreamer 。 非常强大,非常灵活,同时仍然易于上手。 尝试了Java绑定并从Java运行gst-launch二进制文件。 这两种方法都非常有效。

  4. Xuggler看起来不错,但似乎RTP存在问题(如常见问题解答中所述 )。 由于GStreamer和MPlayer都运作良好,我没有通过最初的研究。

我发现GStreamer是满足要求的最佳解决方案,MPlayer是第二选择。

你看过gstreamer吗?

我也花了一些时间研究我的选择,我实际上得出的结论是VLCJ是最好的选择 – 但是这里有关键,你需要运行它(特别是有多个玩家)才能给它你100%可靠的操作。 这是我采取的方法,我还没有看到它崩溃。 以这种方式坚如磐石它还具有其他优势:

  • 它几乎可以发挥任何作用。 是的,这有点陈词滥调,但这包括DVD,Youtubevideo,几乎任何video文件……
  • 应该支持Linux / Mac / Windows,虽然我还没有validationMac工作。
  • 积极维护,如果你在讨论组中提出一个好的(经过深思熟虑的)问题,业主经常会在我的经验中回答一下!
  • 开源,撰写本文时的Google小组活动很高。
  • 使用VLC所做的所有图形加速
  • 能够玩任何重量级的Canvas组件(如果你使用直接播放器,你可以让BufferedImage显示在任何你喜欢的地方,即使在JOGL 3D领域,如果你疯了!

虽然我没有做过任何彻底的测试,但我还没有在资源方面发现它很重(但是我的4岁基本笔记本电脑上有3个玩家正常工作以及我相对耗电的应用程序!)

缺点是什么? 对于进程外的玩家没有官方框架,所以你必须自己构建一个(参见这里我是如何做到的)。 而且你有时需要做一些摆弄才能让它发挥作用。 但据我所知,到目前为止它对我来说效果很好!