Java中的视频播放(JMF,Fobs4JMF,Xuggler,FMJ)

ksu*_*van 24 java video jmf playback fmj

我需要用Java简单的视频播放.

这是我的要求:

  • 生产质量

  • 打开并解码视频文件,我可以选择其视频和音频编解码器.IE我可以选择性能良好的编解码器.

  • 能够播放,暂停,搜索ToFrameseekToTime停止播放.基本上我希望能够以非线性方式播放单个视频文件的片段.例如,我可能想播放段20.3秒到25.6秒,暂停10秒然后播放段340.3秒到350.5秒等.

  • 在播放过程中,视频和音频必须同步.

  • 视频必须显示在Swing JComponent中.

  • 必须能够在商业产品中使用而无需开源(IE LGPL或Comercial是好的)


我的研究让我得到了以下解决方案:

我已经实现了一个快速原型,这似乎做了我需要的.我可以使用以下方式播放视频片段:

player.setStopTime(new Time(end));
player.setMediaTime(new Time(start));
player.start();
Run Code Online (Sandbox Code Playgroud)

虽然Fobs4JMF似乎有效,但我觉得代码的质量很差,而且项目不再活跃.有谁知道任何使用Fobs4JMF的产品?


  • 编写一个播放视频的Flash应用程序,并使用JFlashPlayer将其引入我的Java Swing应用程序

与Java不同,Flash在播放视频方面非常出色.我可以用这些方法编写一个小的Flash应用程序:

open(String videoFile),
play(),
pause(),
seek(int duration),
stop()
Run Code Online (Sandbox Code Playgroud)

然后使用JFlashPlayer将其带入Java,JFlashPlayer可以从Java调用Flash函数.

我喜欢这个解决方案是Flash中的视频播放应该坚如磐石.有人用JFlashPlayer在Java中播放视频吗?


  • 在Xuggler上面写一个简单的媒体播放器

Xuggler是一个用于Java的FFMpeg包装器,它似乎是一个非常活跃和高质量的项目.然而,实现要求中描述的简单视频回放并非易事(特别是寻求),但是一些工作已经在MediaTools MediaViewer中完成,它将成为构建的基础.


  • 使用FMJ

我试图让FMJ工作,但到目前为止还没有成功.


我很感激你对我的问题的看法.

Art*_*rke 11

兄弟可以为Xuggler大喊一声吗?

  • Xuggler的实际下载链接在哪里?! (2认同)

Mic*_*rry 5

在我看来,VLCJ是这类事情的前进方向。我喜欢 Xuggler 的编码/转码工作,但不幸的是,做简单的播放和解决所有同步问题等都太复杂了——而且这样做感觉就像是在重新发明轮子。

VLCJ 唯一的事情是让它与多个播放器一起可靠地工作,我不得不求助于进程外播放器。该框架并不是世界上最容易实现的东西,但是当它在那里时它运行得非常好。我目前正在我的应用程序中并排运行 3 个进程外播放器,没有任何问题。

另一个警告是,嵌入式媒体播放器不能使用 Swing 组件,只能使用重量级画布 - 但这对我来说根本没有问题。如果是这样,那么您可以使用直接媒体播放器获取缓冲图像并在您选择的任何内容上显示该图像,但它会更多地占用您的 CPU(尽管不会比采用这种方法的其他播放器更多。)