如何使用带 h.264_qsv 的 ffmpeg 在给定时间间隔强制关键帧?

How to force key frames at given interval using ffmpeg with h.264_qsv?

我使用以下命令每 5 秒强制关键帧一次,并在 ffmpeg 中设置最小关键帧间隔。

ffmpeg -i input.mp4 -c:v libx264 -pix_fmt yuv420p -r 24 profile:v baseline -level 3.0 -x264opts keyint=$keyFrameInterval:min-keyint=$keyFrameInterval:no-scenecut:pass=1 -movflags +faststart -strict -2 -acodec aac -y output.mp4

这似乎适用于 libx264。 现在我将以下命令与 h264_qsv 一起使用。但我只能每 5 秒强制关键帧一次,并且无法设置最小关键帧间隔。

ffmpeg -hwaccel qsv -i input.mp4 -vcodec h264_qsv -pix_fmt nv12 -preset:v faster -profile:v baseline -level 3.0 -force_key_frames "expr:gte(t,n_forced*5)" -movflags +faststart -strict -2 -acodec aac -f mp4 -r 24 -y output.mp4

如何使用 h264_qsv 实现上述目标?

经过大量研究,我发现将 (group of pictures) -g frameRate*segmentDuration 设置为关键帧间隔解决了我的问题。