执行ffmpeg -codecs | grep -i huffyuv
表明我的 FFmpeg 构建支持三个不同版本的 HuffYUV 无损视频编解码器:
DEVI.S ffvhuff Huffyuv FFmpeg variant
DEVI.S huffyuv HuffYUV
D.VI.S hymt HuffYUV MT
HuffYUV
我知道 HuffYUV MT 是多线程的,而且我的版本似乎只支持对其进行解码,但标准编解码器和ffvhuff
FFmpeg 版本之间有什么区别?有这方面的文档吗?
答案1
在ffmpeg
编码方面,有两个主要区别。
像素格式
ffvhuff 支持更多像素格式(44 种对 3 种)。
请参阅ffmpeg -h encoder=ffvhuff
和ffmpeg -h encoder=huffyuv
了解每个编码器支持的像素格式列表。
每帧霍夫曼表
ffvhuff 支持每帧(上下文自适应)霍夫曼表,这可以减小输出文件大小。但由于它强制将线程数设为 1,因此编码速度较慢。
默认为不是使用每帧霍夫曼表。可以使用 启用它-context 1
。
除像素格式和每帧哈夫曼表之外,它们几乎完全相同。
答案2
HuffYUV 和 ffvhuff 编解码器之间有什么区别?
哈夫YUV
HuffYUV 是由 Ben Rudiak-Gould 提出的,作为未压缩 Y CbCr 视频的替代方案。它将帧内预测与残差的连续霍夫曼熵编码相结合。帧内预测在三种不同的预测模型之间进行选择:左、梯度和中值。
第一个模型(左侧)仅使用像素 l 来预测像素 x,因为 x = l,
第二个模型,梯度,预测 x 为 x = l + a -d,并且
中值模型从模型左侧、模型梯度以及 x 上方的像素 a 中选择中值
请注意,模型选择不是自适应的,而是在编码之前选择一个模型,然后将其用于整个视频序列。此外,只使用一个固定的霍夫曼码熵编码表。
添加上下文:
FFvYUV 是 FFmpeg 项目开发的 HuffYUV 的扩展,用于解决 HuffYUV 的一些缺点:不使用固定的 Huffman 表,而是使用上下文自适应 Huffman 表进行熵编码。
来源平板电脑上基于人群的质量评估的无损视频编解码器比较(pdf)作者是 Christian Keimel、Christopher Pangerl 和 Klaus Diepold。
上面链接的论文包含更多信息、图像和更多资源的链接。
噓
该编解码器由 ffmpeg 开发。
它是一种类似 huffyuv 的编解码器,只是它不向后兼容 huffyuv。但是,它的压缩率比 huffyuv 更高,支持 yv12 色彩空间,并且速度与 huffyuv 差不多