ffmepg - 如何减小包含许多静态图像的视频的大小

ffmepg - 如何减小包含许多静态图像的视频的大小

我有很多视频,其中大部分是静态图像,几乎没有运动。仅在某些序列中存在有大量动作的动画场景。

现在我想减少它们的文件大小,但是带有 crf 或给定比特率的 ffmpeg 似乎不是最好的方法。是否有任何选项可以让 ffmpeg 在有运动的场景中自动使用更高的比特率,并且在大多数场景中比特率几乎为 0(如缓冲区等)?

谢谢

答案1

这就是 CRF 应该做的事情; CRF 应该保持恒定的感知质量。或者,如果您需要针对特定​​的文件大小,则可以使用双通道模式(使用-pass-passlogfile),其中第一通道应发现哪些场景需要位,第二通道将尽可能分配位。

某些代码具有针对不同视频类型的调整选项 - 例如,如果您要编码为 H.264,请尝试调整静止图像或动画。 (当然,如果可以的话,请尝试更改编解码器。或者根据图像类型,为 H.264 启用 10 位,如果可以的话,再次启用。)

场景变化检测和关键帧可能值得摆弄。很多时候,您想要一张带有静态图像的照片;最糟糕的编码通常是最初显示充满伪影的静态图像,并在中间有一个关键帧,它突然变得清晰......对此有很多选择;蛮力法是-force_key_frames.

如果其他方法都不起作用,您可以-rc_override在每帧的基础上手动设置量化器/质量因子。特别是,如果您设置其余选项以使静止帧可接受,则可以使用它来修复动画部分。但这是最后的手段,因为它需要大量的工作!

不过,根据静止帧的内容,它们可能会占用很多位。视频编码在很大程度上是要弄清楚如何用尽可能少的比特来表达运动;复杂的静止帧只需要大量的比特,特别是因为观看者有足够的时间来注意到任何伪影。

我不确定你是否了解 Stack Exchange视频制作网站;那可能是提问的好地方。

相关内容