Сохранение потока из m3u8 плейлиста

Рейтинг: 2Ответов: 1Опубликовано: 15.12.2014

В принципе логика понятна.

ffmpeg -i "http://site/playlist.m3u8" -c copy output.ts

Но попался мне m3u8 плейлист с отсутствующим сегментом - нулевым. ffmpeg ругается (Failed to open segment of playlist 0) и сворачивает выполнение задачи.

Вот, например, начало плейлиста:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:11
#EXT-X-MEDIA-SEQUENCE:1
#EXTINF:9.977,
media_1.ts?wowzasessionid=1133211457
#EXTINF:10.01,
media_2.ts?wowzasessionid=1133211457
#EXTINF:10.343,
media_3.ts?wowzasessionid=1133211457

Подскажите, как это побороть и скачать файл?

Ответы

▲ 1

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

Можно попробовать как-нибудь так:

wget http://site/video/index.m3u8 -O - | grep .ts | sed 's/.*/http:\/\/site\/video\/&/' | wget -i - -O - >> output.ts

Качаем плейлист, выбираем строки с .ts, дописываем к каждому файлу имя домена и путь, и скачиваем список получившихся урлов в один файл.

Ну и затем при желании сконвертировать в любой другой формат при помощи ffmpeg.