3

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

JMFFMJ似乎不支持这些著名的无损视频编解码器:

  • HuffYUV
  • 核心PNG
  • 拉格瑞斯
  • FFV1
  • ...

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

我考虑过的其他选择:

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

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

4

3 回答 3

1

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

于 2008-12-28T10:17:52.470 回答
1
  • GIF 动画:是的,您可以定义动画 GIF 的帧率(实际上您可以为每一帧设置延迟)

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

  • 另一种选择:根据您想要做什么,您可以考虑“远程控制”另一个播放器或框架,可能使用一些本机代码。例如,在 *nix/X11 上嵌入 mplayer,或者在 Windows 上使用 COM 控制 WMP 或 DirectShow。

于 2008-12-28T15:54:39.047 回答
0

好吧,既然你说文件大小不是问题,gzip/bzip2 可以是一个快速而轻松的选择。它不会提供最大的压缩,但如果您找不到更好的答案,它可能是最后的手段。

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

于 2008-12-27T18:47:51.147 回答