我有很多视频,其中大多是静止的图像,几乎没有运动。只有在某些序列中,才会有动感强烈的动画场景。
现在我想缩小他们的文件大小,但是使用crf或给定的比特率似乎不是最好的方法。有没有选择让ffmpeg在有运动的场景中自动使用更高的比特率,在大多数场景中使用几乎为0的比特率(比如缓冲区之类)?
谢谢
发布于 2020-01-19 22:03:08
这是CRF应该做的事;CRF应该保持持续的知觉质量。或者,如果您需要针对特定的文件大小,您可以使用两次传递模式(使用-pass和-passlogfile),其中第一次传递应该发现哪些场景需要比特,第二次传递将尽可能地分配比特。
有些代码为不同的视频类型提供了调优选项--例如,如果编码为H.264,请尝试调优静止状态或动画。(当然,如果这是一种选择,可以尝试更改编解码器。或者根据图像类型为H.264启用10位,如果这是一个选项。)
这可能是值得摆弄的场景变化检测和关键帧。很多时候,你想要一个静态图像;最坏的可能编码通常是最初显示充满工件的静止图像,并在中间有一个关键帧,其中突然变得清晰.这里有很多选项,其中一个是-force_key_frames。
如果没有其他的工作,您可以使用-rc_override手动设置量化/质量因子的基础上的每帧。特别是,如果设置其余选项以使静止帧可接受,则可以使用它来修复动画部分。但这是最后的手段,因为这是一项很大的工作!
但是,取决于静止帧是什么,它们可以占用很多比特。视频编码在很大程度上是为了解决如何以尽可能少的位来表示运动;复杂的静止帧只需要花费很多比特,特别是因为观众有足够的时间注意到任何工件。
我不确定您是否知道Stack的视频制作站点;这可能是一个问问题的好地方。
https://unix.stackexchange.com/questions/562928
复制相似问题