不一致的 libx264 I 帧间隔为什么?

问题描述

尽管将 I 帧间隔定义为固定值,但为什么在某些情况下会不一致?

我正在使用 ffmpeg 和以下命令,而 I 帧 coded_picture_number 如下:0 10 20 30 38 47 57 ... 196 206 215 225 235 245 255

ffmpeg -i football.y4m -c:v libx264 -bf 0 -g 10 football.mp4

有问题的视频数据是footbal (b) at xiph.org

解决方法

如果编码器计算出它在比特率方面的成本会更低,那么它仍然可以更早地放置一个关键帧。如果是这样,下一个 KF 将放置在距过早关键帧 10 帧处。

要抑制这种行为,请使用

ffmpeg -i football.y4m -c:v libx264 -bf 0 -g 10 -x264opts scenecut=0 football.mp4