Как управлять генерацией ключевых кадров ffmpeg?

Я делаю сегмент, который вмешивается ffmpeg 'Функция write_frame и запись выходных данных в отдельные файлы. Каждый сегментированный файл содержит сегмент видео продолжительностью около 3 секунд.

Код делает следующее:

1 - Get transcoded packet  
2 - Check if it contains key frame data, if yes goto 3. 
3 - Check the duration of current segment, if it exceed 3 seconds, goto 4 
4 - Close file, and create new segment, write packet to segment file, goto-1

Вообще говоря, каждый сегмент содержит не менее 3 секунд видеоданных и начинается с ключевого кадра.

Проблема в том, что выходное видеоПродолжительность s очень различна, некоторые содержат 3 секунды, некоторые содержат 5 или 6.

Я подозреваю, что проблема из-за того, как ffmpeg генерирует ключевые кадры во время транскодирования. Если "расстояние" между двумя смежными ключевыми кадрами 6 с, я получил сегмент 6 секунд.

Вот мои вопросы:

Правда ли, что ffmpeg генерирует ключевые кадры с нерегулярными интервалами (а интервал времени может составлять до нескольких секунд (например, 6)?

Как мы можем контролировать генерацию ключевого кадра ffmpeg? (я думаю, что должна быть команда ffmpeg 'аргумент для этого, -force_key_frames может быть, но яя не уверен)

Ответы на вопрос(1)

Ваш ответ на вопрос