Java中的视频播放(JMF,Fobs4JMF,Xuggler,FMJ)
我需要Java中的简单视频播放。
以下是我的要求:
生产质量
打开并解码视频文件,其视频和音频编解码器可以由我选择。也就是说,我可以选择行为良好的编解码器。
能够播放,暂停,寻求ToFrame或寻求时间并停止播放。从本质上讲,我希望能够以非线性方式播放单个视频文件的片段。例如,我可能想播放20.3秒到25.6秒的片段,暂停10秒,然后播放340.3秒到350.5秒的片段,依此类推。
在播放过程中,视频和音频必须同步。
视频必须以 Swing JComponent 形式显示。
必须能够在商业产品中使用,而不必是开源的(即LGPL或Comercial是好的)
我的研究使我找到了以下解决方案:
- 使用Java Media Framework + Fobs4JMF http://fobs.sourceforge.net/f4jmf_first.html
我已经实现了一个快速原型,这似乎可以满足我的需求。我可以使用以下命令播放一段视频:
player.setStopTime(new Time(end));
player.setMediaTime(new Time(start));
player.start();
虽然Fobs4JMF似乎可以工作,但我觉得代码的质量很差,项目不再活跃。有谁知道任何使用Fobs4JMF的产品?
- 编写一个播放视频的Flash应用程序,并使用JFlashPlayer将其引入我的Java Swing应用程序中
与Java不同,Flash在播放视频方面非常出色。我可以用以下方法编写一个小型 Flash 应用程序:
open(String videoFile),
play(),
pause(),
seek(int duration),
stop()
然后使用JFlashPlayer将其引入Java,JFlashPlayer可以从Java调用Flash函数。
我喜欢这个解决方案的原因是Flash中的视频播放应该是坚如磐石的。有没有人使用JFlashPlayer在Java中播放视频?
- 在 Xuggler 之上编写一个简单的媒体播放器
Xuggler是Java的FFMpeg包装器,这似乎是一个非常活跃和高质量的项目。但是,实现要求中描述的简单视频播放并非易事(特别是Seeking),但MediaTools MediaViewer中已经完成了一些工作,这将是构建的基础。
- 使用 FMJ
我试图让FMJ工作,但到目前为止还没有成功。
感谢您对我的问题的看法。