假设我的视频流在很长一段时间内(几分钟到几小时)都有非常少的场景变化,我使用像FFmpeg这样的东西将原始视频转码为h.264,我可以进行哪些设置为了利用大型冗余?
是否将设置最小关键帧间隔设置为最大值(无论是什么)这么简单?
h.264规范中是否有空间增强FFmpeg以进一步利用很长时间而没有场景变化?
答案 0 :(得分:4)
首先,请注意FFmpeg本身并不编码h264,而是x264。
是的,定义一个异常长的keyframe应该会大幅减少长时间很少或没有动作的视频的大小。为什么?因为“关键帧”是包含所有视频数据的帧 - 如果你愿意的话是快照。所有其他帧将与关键帧区分开来。这样做的一个警告是,如果中间帧有任何损坏,那么视频将被破坏,直到出现下一个关键帧。
要在使用FFmpeg进行编码时显式设置关键帧间隔,请使用-g
开关。如果您的视频是每秒25帧,并且您希望关键帧每分钟显示一次,请将-g 1500
添加到您的FFmpeg命令行。 (25 f / s x 60 s = 1500 f)
您可以控制关于您可能感兴趣的关键帧的其他有趣方面,其中许多都记录在此处:x264 ffmpeg mapping and options guide