Как управлять генерацией ключевых кадров 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 может быть, но яя не уверен)