无损 HEVC 和 FFV1 之间的文件大小差异巨大

无损 HEVC 和 FFV1 之间的文件大小差异巨大

我使用 FFmpeg 制作了一个包含静态图像(input.jpg ≈ 1 MB)和音乐(input.wav ≈ 20 MB)的音乐视频。为什么使用无损 HEVC 编解码器生成的视频(output.mkv ≈ 70 MB)和使用 FFV1 编解码器生成的视频(output.mkv ≈ 10 GB)之间的文件大小差异如此之大?

发出的命令

  • 对于无损 HEVC:
ffmpeg -loop 1 -i input.jpg -i input.wav \
       -c:v hevc -crf 0 -c:a flac -s 3840x2160 -r 60 -shortest output.mkv
  • 对于 FFV1:
ffmpeg -loop 1 -i input.jpg -i input.wav \
       -c:v ffv1 -c:a flac -s 3840x2160 -r 60 -shortest output.mkv

看起来要么是无损 HEVC 提供的参数不正确(从某种意义上说并不是真正无损的),要么是 FFV1 是一个糟糕的编解码器。

答案1

FFV1 是帧内编码,因此每个帧都独立于其他帧进行压缩;HEVC 通常是帧间编码。

假设您使用的是 libx265,则必须添加-x265-params lossless=1真正的无损模式(-crf 0不是)。在编码结束时,x265 应该打印一行显示lossless compression ratio

x265 的帧内预测比 x264 和我期望的 FFV1 更好,因此无损压缩效率更高。但解码需要更多资源。

相关内容