Я хотел установить интервал ключевого кадра входного видео на 5 секунд. Только тогда я могу достичь постоянной 5-секундной сегментации HLS с использованием FFmpeg. Как установить интервал ключевого кадра на 5 секунд с помощью FFmpeg? (Код строки подсказки FFmpeg оценен)
Как изменить интервал ключевого кадра в ffmpeg
Ответ 1
Вам нужно переустановить. Установите параметр x264 keyint в 5 * fps и отключите сцену. Если ваш fps равен 24, например:
ffmpeg -i <input> -vcodec libx264 -x264-params keyint=120:scenecut=0 -acodec copy out.mp4
Это явно не оптимально для качества, но оно будет соответствовать вашему требованию.
Отредактировано для изменения no-scenecut
на scenecut=0
, согласно предложению смеха-мальчика.
Ответ 2
Вздох.
Дезинформация относительно опции no-scenecut продолжается дольше, чем я помню. Никогда не вводите значение без сцен.
Ссылка на документацию можно найти здесь.
Для FFmpeg вам необходимо использовать следующие два переключателя:
-g 120 определит GOP из 120 кадров для создания пятисекундной GOP для содержимого 23.976fps. Это работает в сочетании с опцией no-scenecut..
-x264opts no-scenecut заставит создавать ключевые кадры за значение GOP, которое использует FFmpeg. По умолчанию для libx264 создается ключевой кадр, когда он обнаруживает смену сцены. Если вы проверите выходной файл с помощью MediInfo без этой опции, вы увидите "scenecut = 40". Когда сделано правильно, это будет "scenecut = 0". Если этот параметр не используется, ключевые кадры будут несовместимы для содержимого ABR, а размеры сегментов будут непредсказуемыми.
Не верьте мне на слово, запустите следующую команду под оболочкой bash, где $inputfile - это имя файла, который вы хотите проанализировать. Если вы используете два переключателя, показанных выше, вы увидите очень четное кадрирование ключевых фреймов в командной строке.
ffprobe -select_streams v -show_frames -show_entries frame=pict_type -of csv $inputfile | grep -n I | cut -d ':' -f 1
Вы также можете ссылаться на статью, которую я написал о том, как создать правильный выровненный по кадру ABR-контент здесь.