FFMPEG HLS - создать список воспроизведения или предсказать время сегмента перед кодированием

Я использую ffmpeg для создания системы перекодирования видео по требованию, которая обслуживает носители через формат HLS.

прямо сейчас я могу перекодировать видео и служить им, поскольку они закодированы, но я не могу использовать функцию поиска моих игроков, потому что список воспроизведения (.m3u8) только генерируется, поскольку блоки кодируются. Я пробовал использовать -g параметры, установив его на 90 с длиной куска 3s и 30fps (29.7 fps, чтобы быть точным). Но фактическая длина куска немного колеблется. Я также попытался установить флаг HLS round_durations, но плеер не работает с ним.

размеры куска зависят от сцен, которые он транскодирует, или это возможно, путем зондирования файла, чтобы быстро определить его шаблон и создать виртуальный .m3u8 завершено в начале? Или есть ли возможность сделать видео, создать плейлист без кодировки файлов?

- Это приказ, который я использую прямо сейчас: (несколько строк для ясности)

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
5
задан Gyan
источник

1 ответов

Если ты вручную заставляя кадр каденции в некотором роде, выход размещении кадр не смогут угадать без прохождения рамы через шифратор.

Вы можете заставить более точное размещение кадров путем отбрасывания -g и добавить -force_key_frames expr:gte(t,n_forced*3)

2
отвечен Gyan 2017-10-03 18:00:35
источник

Другие вопросы chromecast encoding ffmpeg h.264 video