当前位置: 首页 > 面试题库 >

用Java处理视频(DVD,.avi .mkv)

仲阳朔
2023-03-14
问题内容

在寻找了一个不错的库来用Java播放视频之后,我感到很困惑。周围的每个人都在尖叫着不要使用JMF,因为它已经过时,旧了并且需要用户安装它。其他替代方法(例如VLCJ)如果可行,则看起来不错,但仍然相对不稳定并且依赖大量的本机代码,并且在处理方面DVD,好像在免费图书馆中可以找到的灰尘!

当前选项:

  • 现在JavaFX 2势头强劲,这是我一直在认真考虑的问题(因此在这里提出了我的问题),但到目前为止我在尝试如何使它播放除标准FLV视频之外的其他事情上还没有走运。
  • VLCJ的工作做得很好(请参阅我当前的答案),目前是我要进行的工作。它使用libvlc几乎可以执行任何操作,因为它可以播放几乎任何文件,也可以直接播放DVD。最大的问题是,每个播放器必须使用多个VM才能使其稳定运行,这意味着响应速度相对较慢。我还没有在Mac上使用这种方法。
  • JMF实在是太荒谬了,太可怕了,就我而言,这并不是一个真正的选择。过去我玩过它,但是体验不是很好!
  • FMJ表示,这是JMF的替代品。我尚未像其他大多数人一样使它正常工作,即使我设法使它工作,它本身也使我对它的质量和理解力感到厌倦!
  • Xuggler非常擅长于此,它的教程很棒,而且编写得很好。但是,尽管对于低级转码工作非常有用,但播放视频并以正确的顺序和同步的方式获取帧等只是正常工作的噩梦,并且再次添加更多代码意味着更多的维护和潜在的错误等…
  • 我还没有生气就没有尝试过GStreamer-Java,尽管它似乎不支持DVD播放(这是我正在开发的开源应用程序,所以也不是商业插件),并且它的编解码器支持也不行。似乎是最广泛的。
  • JCodec是一项有趣的工作,是我看到的唯一一个从纯Java角度实现视频支持的方法-但是目前缺乏对格式的支持,这是一个相对较新的项目。
  • 在要支持的每个平台的不同本机库中自己编写内容。由于需要额外的维护和编码时间,因此这绝对是最后的选择。

基于以上(或您能想到的其他任何一种),人们会推荐哪些选择,还有我错过的其他明智选择吗?还是其他人认为在不久的将来可能会上市?


问题答案:

在围绕不同的选项进行了大量研究并尝试了一些方法之后,我还是选择了VLCJ,但这很重要-
所有VLCJ的东西都是在进程外VM中完成的。设置起来有点复杂(请参阅此处,了解我的操作方式),但是之后您可以随意设置它,并且效果很好(目前使用3个进程外播放器,没有稳定性问题。)

Xuggler很棒,但不幸的是,对于我来说水平太低了-
重新发明轮子的数量(以及更糟糕的轮子),只是为了寻求工作的回放而使我有些失望。我觉得要花所有的时间解决所有问题。对于编码/转码/其他低级视频工作,尽管我会全力推荐它-
最好毫无疑问。

请注意我选择的方法?好吧,如果未明确关闭外部VM,即使在应用程序退出后,它们仍会在后台继续播放视频,并且使用这种方法会使调试变得更加困难。我也尚未验证它是否可以在Mac上运行,我最初的建议可能不是因为我听说MacOS不允许未经未经本机代码的明确许可,一个进程控制另一个窗口。不过,通过一些工作,这应该是可能的。

作为我目前正在从事的项目的副产品,我可能会看到是否可以在下面使用VLCJ的简单Java视频框架中包装所有这些超出流程功能的内容。如果有人对此感兴趣(我不能保证任何事情,但是我越感兴趣,我就越有可能从事这项工作),请随时告诉我!

因此,根据我的研究和发现,如果您只想播放/录制/流式传输视频内容,建议您使用VLCJ(但 绝对
使用进程外播放器),如果您要使用编解码器本身。在撰写本文时,还没有一个不错的纯Java解决方案,它可能会保留一段时间-
幸运的是,尽管跨平台的本机库可以得到不错的结果。它只需要做更多的工作!



 类似资料:
  • 问题内容: 我想从视频中提取帧并对其应用一些过滤器,例如gabor / hough等。哪个Java库最适合处理各种视频编码?我一直在研究GStreamer,JMF,Xuggler等,但无法确定哪一个最好。我还希望编辑框架并使用新框架制作视频。 问题答案: 如果您要进行低级操作(例如提取帧和对其进行操作),那么Xuggler将是最佳选择,因为API围绕此低级进行调整。它适用于ffmpeg,因此可以处

  • 虽然HTML5的画布API没有提供直接在画布上绘制视频的方法,但是我们一定可以处理视频,其方法是从隐藏的video标签中捕获视频的帧,再使用循环把它们拷贝到画布上。 图3-5 处理视频 准备工作 开始之前,让我们谈一谈每个浏览器所支持的HTML5视频格式。在本书写作之时,关于视频格式的战争还在如火如荼的进行着,所有的主流浏览器,如Chome, Firefox, Opera, Safari, and

  • 我遵循这个链接的第二个答案(两个步骤)来实现视频到Youtube的上传:使用curl和api v3在Youtube上上传视频 代码工作正常,但当我执行时,我得到的响应是:状态:嵌入:true license:“YouTube”privacystatus:“unlisted”publicstatsviewable:true uploadstatus:“uploaded”

  • 问题内容: 我正在将Android 2.2与Eclipse结合使用。 我想制作一个捕获视频的应用程序,并针对每一帧将其作为位图发送到处理该方法 并返回新位图 并显示已处理位图的方法。 我对Android不太熟悉,因此,请问有人可以将我发送到我需要研究的资源上吗? 问题答案: 使用Android SDK完成以下步骤非常简单: 从相机捕获预览帧作为位图数据。 将以多种可能的图像格式返回代表帧的数据。

  • 问题内容: 我需要在Java应用程序中进行一些简单的视频编辑,但是我发现的框架(JMF和FMJ)看起来很陈旧,到目前为止,我还没有发现任何证据可以实际编辑视频。我需要的操作类型是:裁剪,编辑部分和提取剪辑。 我以前从未以任何实际身份使用过视频,因此可能只是误解了FMJ / JMF的功能,但我仍对这些工具的最新版本的年龄感到担忧。 人们用什么来做这种事情?我应该使用哪些关键字来获得更相关的结果? (