Часть 4. Изменение характеристик выходного потока в Tvheadend

Добавлено:  02-08-2021 17:32 Soft-Fresh

Тэги:  сервер потокового вещания,настройка tvheadend,профиль "spawn"

Средняя оценка: 2.19   Голосов: 120
Часть 4. Изменение характеристик выходного потока в Tvheadend

В данном обзоре поговорим о том, как поменять характеристики выходного потока в Tvheadend.

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

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

Для Debian или Ubuntu сделать это весьма просто:

sudo apt install ffmpeg

Версия "встанет" не самая свежая, но для наших потребностей ее будет более чем достаточно. Если хотите более свежую, спросите у "Дяди Гугла" - он точно знаеет, как это сделать).

Создание профиля "spawn" в Tvheadend

Помимо установки ffmpeg, нам необходимо создать собственный профиль потока в Tvheadend. Переходим в раздел "Конфигурация" --> "Поток". Нажимаем добавить - из списка выбираем профиль"MPEG-TS Spawn".

Создание профиля "spawn"

Во вновь созданном профиле, вписываем в поле "Имя профиля" - произвольное наименование профиля, а в "Command line" - шаблон для преобразования, остальные поля оставляем, как есть, ну, или опционально можете поменять на свои значения (главное при этом понимать, что вы делаете и для чего)). После этого сохраняем профиль.

Редактирование профиля "spawn"
Примеры шаблонов поля "Command line"

"Обрезаем" выходной поток до одной "звуковой дорожки":

/usr/bin/ffmpeg -loglevel warning -i pipe:0 -err_detect --ignore_err -ignore_unknown -map 0:v:0 -map 0:a:0  -codec copy  -f mpegts pipe:1 

К примеру в потоке 3 звуковых дорожки, нам нужна 2-я по порядку. Так как в ffmpeg наименование идет от 0, указываем -map 0:a:1

Изменяем звуковой кодек. Бывает, что в некоторых потоках имеет место быть некоторый разнобой с кодеками, видео в h264, а звук в mp2a. На некоторых устройствах - "картинка" есть, а звука нет. Перекодируем звук в aac.

/usr/bin/ffmpeg -loglevel warning -i pipe:0 -err_detect --ignore_err -ignore_unknown  -vcodec copy -acodec aac -ac 2 -ar 48000 -ab 192k  -f mpegts pipe:1

Транскодирование видео, как вариант - изменение разрешения 1080 в 576 (hd в sd)

/usr/bin/ffmpeg -loglevel warning -i pipe:0 -err_detect --ignore_err -ignore_unknown -vf "scale=720:576:flags=lanczos,setsar=1:1" -vcodec libx264 -preset veryfast  -acodec copy  -f mpegts pipe:1

Стоит отметить, что транскодирование потребляет "приличную мощность процессора", особенно, если транскодируется видео, как в последнем примере. Можно возложить данные обязанности на видеокарту, если она есть, но это уже "другая история".

После внесения изменений в профиль - не забываем сохраняться. Помимо этого, необходимо выбрать его в поле "streaming profiles" для того пользователя, от которого вы будете запрашивать плейлист.

Забрать плейлист с данным профилем (в моем случае он называется "spawn"), можно так:

http://ip:9981/playlist/auth?auth={authcode}?profile=spawn

отдельный поток:

http://ip:9981/play/stream/channelname/CHANNELNAME?auth={authcode}?profile=spawn

На этом все... В следующей части расмотрим способы добавления потоков, которые невозможно добавить "штатными средствами" в Tvheadend.

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

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