В данном обзоре поговорим о том, как поменять характеристики выходного потока в Tvheadend.
И сразу возникает резонный вопрос - для чего это нужно? В принципе с помощью данной опции можно сделать многое. Вариантов много: уменьшить количество звуковых дорожек до одной, увеличить или уменьшить разрешение видео, обрезать до нужных пропорций, наложить логотип или текст, поменять видео или аудио кодек на выход и прочее.
Все манипуляции с потоком будем производить с помощью ffmpeg, поэтому если он не установлен, то требуется установить, благо это не сложно.
Для Debian или Ubuntu сделать это весьма просто:
sudo apt install ffmpeg
Версия "встанет" не самая свежая, но для наших потребностей ее будет более чем достаточно. Если хотите более свежую, спросите у "Дяди Гугла" - он точно знаеет, как это сделать).
Создание профиля "spawn" в Tvheadend
Помимо установки ffmpeg, нам необходимо создать собственный профиль потока в Tvheadend. Переходим в раздел "Конфигурация" --> "Поток". Нажимаем добавить - из списка выбираем профиль"MPEG-TS Spawn".
Во вновь созданном профиле, вписываем в поле "Имя профиля" - произвольное наименование профиля, а в "Command line" - шаблон для преобразования, остальные поля оставляем, как есть, ну, или опционально можете поменять на свои значения (главное при этом понимать, что вы делаете и для чего)). После этого сохраняем профиль.
Примеры шаблонов поля "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.
Надеюсь, что данный материал был полезен...
Комментарии ()