LINUX.ORG.RU

Запись трансляции и параллельный просмотр

 , ,


0

1

Хочу смотреть хоккей, но к началу трансляции не успеваю на час-полтора.

Мой провайдер хоть и отдает поток с архивом, но в SD качестве. Я нашел ссылку на m3u8-плейлист в FHD, но там нет архива. Можно записать матч и потом посмотреть. Но тогда придется сидеть, ждать пока игра закончится. Хочу в процессе записи подключиться и смотреть на телике с Андроидом.

Пробовал:

  • Streamlink пишет трансляцию и одновременно транслирует в телик. Но при таком варианте я начинаю смотреть не с начала.

  • Если писать файл Streamlink-ом или ffmpeg и смотреть этот файл или через DLNA, или через SFTP, то оно вроде идет, но перемотка не работает. То есть я не могу пересмотреть момент и при попытке перемотки возвращаемся к началу файла. Перепробовал проигрывателей штук 5. Хотя если запустить в vlc на компе, то с перемоткой нет проблем.

  • Пробовал писать ffmpeg-ом с флагом movflags +faststart, но все равно, он всю информацию пишет хоть и в начале файла, но после остановки записи.

  • Думал о варианте подключения флэшки к телику и запуск mpv на Андроиде с кэшированием на пару часов. Не осилил, да и не факт что это вообще вариант.

  • Читал про gstreamer, вообще не осилил. Знать бы, что он может помочь, старался бы лучше.

Ютуб, ВК, поставщики видео и пр. как то же это реализуют. Там же возможно смотреть с начала, или вернуться в «прямой» эфир.


Ответ на: комментарий от ox55ff

А вот кстати и работает ведь. Но удаленно запускать геморно. Создать трансляцию, потом подключаться к компу, запускать. Жаль что скриптом нельзя сделать. Хотяяя….

dnsis
() автор топика

но к началу трансляции не успеваю на час-полтора.

Streamlink пишет трансляцию и одновременно транслирует в телик. Но при таком варианте я начинаю смотреть не с начала.

Что мешает воспроизводить образовавшийся файл, весом «на час-полтора», любым плеером? Как раз и будет с самого начала.


Не знаю, наверно должны быть прописанные в доках параметры, позволяющие тому же Streamlink «писать, транслировать и смотреть с начала». Во всяком случае этот функционал напрашивается.

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

я тебе и написал, как это делается у нас, в нашем стриминговом сервере.

Пишешь базу данных сегментов, делаешь механизм её чтения и дальше поддержку протоколов

max_lapshin ★★★★★
()

Если бы не телик с андроидом, то перемотка в недописанном файле работала бы.

Если телек умеет смотреть на страничке в жабоскриптном проигрываетеле, напр. DASH, то сделай страничку на локалхосте с JS-проигрывателем напр. DASH, и укажи ffmpeg’у который у тебя пишет поток выходной формат -f dash. Оно будет писать на диск кусочками которые будет потом жрать JS-проигрыватель и подсовывать браузерному видеоплееру. Прям как ютуб. По окончании записи можно будет тем же ffmpeg’ом собрать все сегменты в один файл. Если писать без перекодировки, то ffmpeg почти ничего жрать не будет.

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

В общем попробовал кучу вариантов. Можно создать трансляции, неважно какую:

hls:
ffmpeg ... -f hls master.m3u8
dash:
ffmpeg ... -f dash master.mpd

Если взять например hls, поскольку трансляция живая, то в файле m3u8 нет закрывающего тега #EXT-X-ENDLIST и согласно спецификации проигрыватели (будь то ffplay, potPlayer, mpv) не хотят перематывать. Но Windows версия vlc прекрасно справляется с перемоткой, в отличии от версии для Android. Поэтому для просмотра нужно использовать библиотеки hls.js или dash.js с запуском http сервера конечно. Но смотреть на Android через браузер - то ещё извращение.

Поэтому я нашел способ чуть проще, пишем трансляцию:

ffmpeg ... -c copy master.ts

В винде открываем этот файл через vlc и идем по пути [Воспроизведение]->[Воспроизводитель]->[Выбираем наш телик]

dnsis
() автор топика