Часть 5. Добавление потоков в Tvheadend с помощью ffmpeg, vlc, youtube-dl

Добавлено:  22-02-2022 14:02 Soft-Fresh

Тэги:  сервер потокового вещания,настройка tvheadend,pipe tvheadend

Средняя оценка: 2.20   Голосов: 56
Часть 5. Добавление потоков на вход в Tvheadend с помощью стороннего софта

После долгого перерыва решил я, таки, продолжить цикл статей о Tvheadend.)

В пятой части обзора, поговорим о том, как добавить потоки, которые не работают в tvh с помощью добавления штатными средствами.

К примеру, потоки mpeg-dash или mp4 без предварительной обработки работать не будут. Помимо этого, приведенные ниже примеры, позволят добавлять относительные ссылки c youtube, twitch и не только, без предварительного их преобразования.

Все нижеописанные "фокусы", доступны, благодаря частичной поддержки pipe (конвейера) в tvh. В глобальном понимании pipe - это перенаправление ввода/вывода команд из одной в другую.

Добавление потока в tvheadend с помощью ffmpeg
pipe:///usr/bin/ffmpeg -loglevel warning -i ссылка_на_поток -map 0 -codec copy -f mpegts  pipe:1

где, -map 0 - добавляем все потоки на видео и аудио, которые есть в потоке; -codec copy - копируем кодеки аудио и видео из входа на выход без изменений; -f mpegts - меняем контейнер (обертку) на mpeg-ts

Тоже самое, но для потока mp4

pipe:///usr/bin/ffmpeg -loglevel warning -i ссылка_на_поток -map 0 -codec copy  -bsf:v h264_mp4toannexb,dump_extra -f mpegts  pipe:1

где, -bsf:v h264_mp4toannexb,dump_extra - фильтр, позволяющий "ремуксировать" mp4 в mpegts.

Выше, я привел упрощенные примеры, нужные ключи комманд для каждого конкретного случая можно найти в man ffmpeg

Добавление потока в tvheadend с помощью vlc
pipe:///usr/bin/cvlc --quiet --no-drop-late-frames --no-skip-frames "ccылка_на_поток" --sout '#std{mux=ts,access=file,dst=-}'

где, usr/bin/cvlc - запускаем vlc без графического интерфейса, no-drop-late-frames - не отбрасывать опоздавшие кадры, no-skip-frames - не пропускать кадры.

Другие "ключи" командной строки для vlc, которые могут пригодится в вашем случае, можно найти здесь

Добавление ссылки с youtube, twitch в tvheadend с помощью youtube-dl или yt-dlp
pipe://yt-dlp  -f best  https://ссылка_на стрим_на_ютуб -o -

где, -f best - выбираем поток с лучшими характеристиками из всех доступных. yt-dlp - это форк youtube-dl, рекомендую использовать его, так как обновления компонентов там происходят гораздо чаще, нежели чем у "родителя".

Полный список источников и описание "ключей", которые могут пригодится - ищите в git`е youtube-dl

Излишне злоупотреблять данным способом не рекомендую, так как youtube может "выписать бан" на ip, где крутится tvheadend).

Помимо вышеприведенного способа, данную манипуляцию можно произвести с помощью streamlink, но, примеры, приводить не вижу смысла, так как, желающие могут найти всю информацию в интернете).

Добавить все вышеописанное "безобразие" в Tvheadend можно двумя способами: в ручном (помуксово) и автоматическом режиме.

В ручном режиме:

Просто добавляем конструкцию с pipe в поле url муксы

Добавление потока в url муксы.

либо, заносим в поле Environment (окружение) - шаблон конструкции, а в поле url - добавляем ссылку.

Пример добавления шаблона в поле environment.
В автоматическом режиме:

В этом случае приводим, загружаемый в tvheadend плейлист, к следующему виду:

       #EXTM3U
       #EXTINF:-1,Имя_канала
       pipe:///usr/bin/ffmpeg -loglevel warning -i ссылка_на_поток -map 0 -codec copy -f mpegts  pipe:1

На этом все... Всем - спасибо за внимание).

Надеюсь, что данный материал был полезен...

Комментарии ()
    Top