Java中的无损视频编解码器播放

时间:2008-12-27 18:01:43

标签: java video codec lossless-compression

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

JMFFMJ似乎不支持这些众所周知的无损视频编解码器:

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

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

我考虑过的其他选择:

  • 动画GIF:播放是否保证具有与真实视频编解码器一样的恒定帧速率?
  • 加载并显示单独的帧:以恒定的帧速率执行此操作并且不会丢失太多帧有多困难?
  • Proce55ing:视频播放库需要Quicktime,这在我的平台上不可用。

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

3 个答案:

答案 0 :(得分:1)

FMJ确实支持存储/播放一系列PNG图像的实验方法,就像MJPEG是一系列JPEG图像一样。一种是实验性XML文件格式,它对PNG进行编码(相当臃肿),另一种是x-multipart-mixed-replace HTTP格式,FMJ支持文件格式,以扩展名.mmr结尾

答案 1 :(得分:1)

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

  • 手动显示帧:取决于硬件,帧速率和图像大小。没有硬件支持,30fps的高清分辨率将很难,缩略图大小在任何平台上都不应该是一个问题。

  • 另一种选择:取决于你想做什么,你可以考虑“远程控制”另一个玩家或框架,可能还有一些本机代码。例如,在* nix / X11上嵌入mplayer,或使用COM在Windows上控制WMP或DirectShow。

答案 2 :(得分:0)

好吧,因为你说文件大小不是问题,gzip / bzip2可以是一个快速而轻松的选择。它不会给出最大压缩,但如果你找不到更好的答案,它可能是最后的追索权。

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