5

Я пытаюсь взять 5-минутный видеофайл и произвести гусек HTTP плейлист прямой трансляции и .ts - файл. Формат файла списка воспроизведения может поддерживать байтовые диапазоны вместо отдельных файлов с iOS 5, что является хорошей целью для моих сценариев использования. Но когда я запускаю свою команду ffmpeg , первая запись в результирующем списке воспроизведения .m3u8 не начинается с (или даже рядом) байта 0.

Например:

ffmpeg -i input -hls_flags single_file out.m3u8

Создает плейлист примерно так:

#EXTM3U
#EXT-X-VERSION:4
#EXT-X-TARGETDURATION:11
#EXT-X-MEDIA-SEQUENCE:63
#EXTINF:1.376367,
#EXT-X-BYTERANGE:568324@63107840
out.ts
#EXTINF:1.334667,
#EXT-X-BYTERANGE:235564@63676164
out.ts
#EXTINF:1.918589,
#EXT-X-BYTERANGE:343288@63911728
out.ts
#EXTINF:10.427078,
#EXT-X-BYTERANGE:3311996@64255016
out.ts
#EXTINF:5.672333,
#EXT-X-BYTERANGE:52828@67567012
out.ts
#EXT-X-ENDLIST

Обратите внимание, что первая запись EXT-X-BYTERANGE не @0 - она составляет около 63 МБ в файле .ts . Действительно, при загрузке списка воспроизведения в <video> и открытии HTML-кода с помощью Safari воспроизведение видео начинается примерно через 20 секунд с конца входного видео, а не с 0, и нет способа удалить его раньше.

Почему ffmpeg создал плейлист, который не включает все видео? Когда я смотрю файл .ts созданный рядом со списком воспроизведения, присутствует весь видеоконтент.

Я вижу это на недавних статических сборках ffmpeg под Linux, а также на сборке Homefrew версии ffmpeg 2.7.1 под OS X.

1 ответ1

6

После прочтения документации HLS снова, я , наконец , заметил этот вариант:

hls_list_size size

Установите максимальное количество записей в списке воспроизведения. Если установлено значение 0, файл списка будет содержать все сегменты. Значение по умолчанию 5.

Конечно, в моем начальном вопросе есть 5 записей EXT-X-BYTERANGE с конца видео, в соответствии с заявленным значением по умолчанию. Установка hls_list_size в 0 как указано, фактически гарантирует, что видео начинается в начале и включает все ожидаемые диапазоны байтов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .