2008-12-27 38 views
3

我需要使用无损视频编解码器对帧序列进行编码并在Java应用程序中播放它们。我不关心文件大小。输出帧应该与输入帧完全匹配。即使在高比特率下,有损编解码器也不会这样做。Java中的无损视频编解码器播放

无这些知名的无损视频编解码器的出现在JMFFMJ得到支持:

  • HuffYUV
  • CorePNG
  • Lagarith
  • FFV1
  • ...

你知道吗Java中支持的任何无损视频编解码器的编码?

其他选择,我认为:

  • GIF动画:是回放保证有一个恒定的帧速率像真正的视频编解码器?
  • 加载并显示单独的帧:以固定帧速率完成此操作并且不会丢失太多帧会有多困难?
  • 程序:视频播放库需要Quicktime,这在我的平台上不可用。

编辑:我终于决定以最高的质量解决JMF(非标准)MotionJPEG。它不是完全无损的,但仍然比MPEG4质量好得多。

回答

0

那么,既然你说文件大小不是问题,gzip/bzip2可以是一个快速和无痛的选择。它不会给予最大限度的压缩,但如果您未能找到更好的答案,它可能是最后的追索权。

使用java.util.zip.GZIPInputStream可以透明地打开Gzip文件,并且类似的接口可用于Bzip2。

+0

这基本上是“加载并显示单独的框架”选项的变体。我担心即使没有压缩,速度也不会太快。 – palm3D 2008-12-27 19:51:30

+0

为什么这个选项会变慢?我只能想象I/O成为瓶颈,取决于视频分辨率等细节。 CPU不会成为瓶颈,因为您通过准备使用数据来减少工作量。 PS。我实施了一次视频解码器(MPEG4 FGS)。 – ePharaoh 2008-12-28 02:33:52

1

FMJ确实支持存储/播放一系列PNG图像的实验方法,MJPEG就是一系列JPEG图像。一个是uuencode进行编码的PNG图像(相当臃肿)的实验XML文件格式,另一个是x多部分混合替换HTTP格式,FMJ支持的文件格式具有扩展.mmr

1
  • 结束

    动画GIF:是的,您可以定义动画GIF的帧率(实际上您可以为每个单帧设置延迟)

  • 手动显示帧:取决于硬件,帧速率和图像大小。在没有硬件支持的情况下,30fps的高清分辨率将非常困难,缩略图的大小在任何平台上都不成问题。

  • 另一种选择:根据你想要做什么,你可以考虑'远程控制'另一个玩家或框架,可能与一些本地代码。例如,在* nix/X11上嵌入mplayer,或在Windows上使用COM来控制WMP或DirectShow。