Я использую ffmpeg для создания системы транскодирования видео по требованию, которая обслуживает мультимедиа в формате HLS.
Прямо сейчас я могу перекодировать видео и обслуживать его по мере их кодирования, но я не могу использовать функцию поиска моих проигрывателей, потому что список воспроизведения (.m3u8) генерируется только по мере кодирования фрагментов. Я попытался использовать параметры -g
, установив его на 90 с длиной чанка 3 с и 30 к / с (29,7 к / с, если быть точным). Но фактическая длина куска слегка колеблется. Я также попытался установить флаг HLS round_durations
, но проигрыватель не работает с ним.
Зависит ли размер фрагментов от сцен, которые он транскодирует, или же можно, исследуя файл, быстро определить его шаблон и сгенерировать виртуальный файл .m3u8 в начале? Или есть ли возможность заставить ffmpeg генерировать плейлист без фактического кодирования файлов?
Это команда, которую я сейчас использую: (несколько строк для ясности)
ffmpeg.exe -i input.mkv -c:v libx264 -c:a aac -crf 22 -preset faster
-format hls -sn -hls_time 3 -hls_base_url http://localhost/media/
-hls_list_size 0 -hls_flags split_by_time -hls_playlist_type event -g 90 -r 30 index.m3u8