在转码和移除 B 帧时保持关键帧

Maintain keyframes when transcoding and removing b-frames

我需要将视频从 .mov 容器中的 H.265 转码为 .mkv 容器中的 H.264,并希望删除 b 帧。使用 ffmpeg 执行此操作的命令相对简单 [0],但它似乎正在删除关键帧并使用场景检测来确定何时使用它们。

有没有办法让它在输出中保持关键帧?

0: ffmpeg -i <input.mov> -vcodec libx264 -bf 0 -acodec copy <output.mkv>

使用

ffmpeg -i <input.mov> -force_key_frames source -vcodec libx264 -bf 0 -acodec copy <output.mkv>

这会将 KF 置于与源中相同的时间戳*。

*请注意,由于轨道时基可能发生变化而导致时间戳四舍五入,因此时间戳可能不相同。