LINUX.ORG.RU

запись видеопотока

 , , , ,


0

3

Есть хреноватый но быстрый канал, по которому идет видеострим с видеокамеры, идет постоянно/круглосуточно и надо этот стрим записывать. Если верить ffmpeg, стрим идет в h.264. Единственное, где это можно делать, это относительно дохлая ARM926EJ-S с быстрым SATA-интерфейсом и большим диском. Стрим странный - используется m3u плейлист, не знаю как это называется. Сейчас используется ffmpeg (сам бинарь) для записи, но есть проблема - ffmpeg периодически виснет и на ^C не реагирует. Обычно для этого должно пройти несколько часов. Никакие kill -15 не помогают. После некоторого времени пинания, оно таки падает и будучи перезапущенным, снова работает несколько часов до следующего раза. VLC отказался с этим стримом работать. Соответственно решили поисследовать вопрос в направлении написания своего такого приложения, с использованием стандартных библиотек, соответственно ищется любая помощь с тем, откуда начинать и какие компоненты использовать. Хотелось бы с минимальными усилиями. Помогите, люди добрые!

★★★★★

используется m3u плейлист,

Расширение .m3u8, да? Это Apple HTTP Live Streaming, спецификации тут. Вот пример такой же трансляции.

Если без ffmpeg и VLC, то можно тупо башем писать. Периодически качаешь этот m3u8 файл (период можно узнать, посмотрев метаинформацию в этом же файле) и скармливаешь wget (ключ -i и возможно понадобится -B, если пути относительные в .m3u8). Он будет качать куски видеофайлов в формате .ts, они будут пронумерованы в хронологическом порядке. После окончания эти файлы можно просто слить в один с помощью cat *.ts > ../video.ts.

Писал такую трансляцию когда-то таким образом, не знал что ffmpeg и VLC поддерживают этот протокол.

VLC отказался с этим стримом работать.

У меня работает (2.0.х), может у тебя старый? Но он иногда внезапно завершает воспроизведение такого потока, нестабильно вобщем.

firestarter ★★★☆
()
Последнее исправление: firestarter (всего исправлений: 4)

Есть хреноватый но быстрый канал

Интересное начало.

VLC отказался с этим стримом работать.

Вот тут странно. Копай в эту сторону. Обычно vlc пожирает всё подряд невзирая на любые ошибки. А есть возможность сделать так чтобы этот поток шёл через интернет (чтобы мы могли его посмотреть)?

anonymous
()
Ответ на: комментарий от anonymous

Вот тут странно. Копай в эту сторону. Обычно vlc пожирает всё подряд невзирая на любые ошибки. А есть возможность сделать так чтобы этот поток шёл через интернет (чтобы мы могли его посмотреть)?

Увы, там интернет с учетом трафика, а этот «канал» - кусок витухи и 2 циски. Хреноватый = может внезапно упасть и подняться через несколько минут сам, и где-то на пути режут соединения чем-то не очень хорошим, приводящим к глюкам. А так 100Mbit типа, точка-точка.

slapin ★★★★★
() автор топика
Ответ на: комментарий от firestarter

Спасибо тебе за тестовую ссылку, я хоть смогу что-то написать здесь не ездя никуда!

А если этот m3u8 перечитывать по его метаинформации, там еще будут оставаться уже прочитанные кусочки и их надо будет пропускать, или уже одни новые?

slapin ★★★★★
() автор топика
Ответ на: комментарий от slapin

там еще будут оставаться уже прочитанные кусочки и их надо будет пропускать

ну да, там могут оставаться уже прочитанные куски, их нужно пропускать. У wget есть ключ, благодаря которому он не будет повторно скачивать уже сохранённый файл (-nc).

firestarter ★★★☆
()
Ответ на: комментарий от slapin

Небольшое уточнение. .m3u8 плейлист может содержать несколько таких .m3u8, которые уже в свою очередь содержат сегменты видеофайлов .ts. Эти вложенные плейлисты имеют разный битрейт. Сделано это для автоматического выбора битрейта плеером в зависимости от пропускной способности канала.

firestarter ★★★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.