Я пытаюсь взять 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.