mic*_*ael 4 compression video encoding ffmpeg h.264
假设我有一个视频流,在很长一段时间(几分钟到几小时)内场景变化非常少,并且我正在使用 FFmpeg 之类的工具将原始视频转码为 h.264,我可以使用哪些设置来获得利用巨大的冗余?
是否与将最小关键帧间隔设置为最大值(无论是什么)一样简单?
h.264 规范中是否有空间增强 FFmpeg,以进一步利用很长一段时间而无需场景更改?
首先,请注意 FFmpeg 本身并不编码 h264,而是x264编码。
是的,定义一个异常长的关键帧应该会显着减小长时间很少运动或没有运动的视频的大小。为什么?因为“关键帧”是包含所有视频数据的帧——如果您愿意的话,可以说是快照。所有其他帧都将与关键帧不同。这样做的一个警告是,如果中间帧有任何损坏,那么视频将被损坏,直到下一个关键帧出现。
要在使用 FFmpeg 编码时显式设置关键帧间隔,请使用-g开关。如果您的视频为每秒 25 帧,并且您希望关键帧每分钟显示一次,请添加-g 1500到 FFmpeg 命令行。(25 f/sx 60 s = 1500 f)
您可以控制您可能感兴趣的关键帧的其他有趣方面,其中许多内容记录在此处: x264 ffmpeg 映射和选项指南