TVLINK: настройка и использование (инструкция обновляется и дополняется).Телеграм чат по вопросам TVLINK.
Отдельный релиз для MIPSEL (MediaTek MT7621AT, OpenWrt 22.03, Python 3.10 ) собранный под Python-3.10:
- обновлена утилита "picons" (синхронизация имен каналов с программой)
- добавлен модуль преобразования потоков в реальном времени через FFMPEG (transcoding)
FFmpeg transcode stream.Основное назначение этого модуля - обеспечить нормальное переключение разных потоков одного и того же канала в KODI. Имеется ввиду, когда TVLINK автоматически переключает переставший работать поток на следующий.
Как я уже упоминал, если аудио-параметры нового потока отличаются от предыдущего - плеер в KODI не сможет проиграть такой (новый) поток.
Модуль "FFmpeg transcode stream" решает проблему, преобразовывая все потоки к одному и тому же аудио формату.
Также, модуль можно использовать для передачи потоков в "Tvheadend" или просто для перекодировки потоков в нужный формат...
Если в Вашей системе установлен FFmpeg, на странице "Settings" веб-интерфейса TVLINK, будет возможность включить модуль "FFmpeg transcode stream".
***В системах AlexELEC (для PC/Amlogic) FFmpeg встроен в систему. В CoreELEC ae-fork нужно установить плагин "FFmpeg-tools".
Опции - это параметры командной строки
FFmpeg. Назначение полей:
- Before input - для параметров аппаратного транскодинга
- Video encoder - параметры видео энкодера
- Audio encoder - параметры видео энкодера
Чтобы было понятно, какая опция куда будет вставлена - строка параметров FFmpeg по умолчанию выглядит так (упрощенная схема):
/usr/bin/ffmpeg -err_detect ignore_err -stream_loop -1 [Before input] -i http://channel.stream -c:v [Video encoder] -c:a [Audio encoder] -ignore_unknown -map 0:v -map 0:a -f mpegts
Video/Audio encoder по умолчанию содержат параметр "copy". Если эти строки пусты в веб-интерфейсе - будет установлено значение "copy" (пропускать поток без перекодирования).
Для основного своего назначения (преобразования аудио для KODI) , установите значение для "Audio encoder" например так - "aac -b:a 96k".

Это означает, что аудио всех потоков будет выдаваться в формате "AAC (Advanced Audio Coding)" с битрейтом 96 kbit.
Перед тем как устанавливать значения - убедитесь, что ffmpeg в Вашей системе поддерживает те или иные параметры. Например, дайте команду
ffmpeg -hide_banner -encoders
чтобы посмотреть доступные Вам аудио/видео энкодеры.
Вот вывод этой команды в системе AlexELEC-PC:
Encoders:
V..... = Video
A..... = Audio
...
Если процессор в Вашей системе (например Intel Pentium N5000 в моем боксе) поддерживает аппаратное преобразование потоков - можно сделать такие настройки:
Before input
-hwaccel vaapi -hwaccel_output_format vaapi -hwaccel_device /dev/dri/renderD128
Video encoder
Audio encoder
Before input - здесь говорит о том, что мы будем использовать аппаратные возможности видео-адаптера Intel UHD Graphics 605 для преобразования потока.
Video encoder - указываем encoder "h264_vaapi" (в H.264) и задаем частоту обновления выходного потока (frame rate) 50 кадров/сек.
К слову, на моем Intel Pentium N5000 я подключал 4 клиента к TVLINK c включенными настройками выше (аппаратное кодирование h264) без особой нагрузки на процессор (примерно 30%).
А вот если включить кодек "hevc_vaapi" (H.265/HEVC) - больше одного клиента не обработать. При этом процессор не загружен, просто ограничение в самой графике.
Хочу предупредить, что FFmpeg не всегда может нормально перейти от одного потока на другой, при аппаратном кодировании видео (речь идет именно о кодировании видео, если Вы его включили). Например, если первый поток канала был обычный h264 с частотой 25 кадров, то переход на Youtube-поток этого канала с частотой 30 кадров - вызывает падение FFmpeg и TVLINK переключает дальше. Хотя, в обратном порядке (сначала Youtube 30, потом обычный 25) - проблем не возникает.
После применения настроек (
Apply Settings) на странице "About" появиться ссылка на "M3U FFmpeg Playlist" (формат:
http://ip-address:port/ffmpeglist).

Включение "FFmpeg transcode stream" не влияет на основной модуль вешания. Они работают параллельно. Вы можете одновременно подключить одних клиентов к обычному плейлисту (playlist), а других к "FFmpeg transcode stream" плейлисту (ffmpeglist).
По ссылке "http://ip-address:port/ffmpeglist" - Вы всегда можете получить плейлист, даже если "FFmpeg transcode stream" отключен и в системе нет FFmpeg. Поэтому будьте внимательны.Если включить "Debug Streams" и запустить TVLINK из командной строки
/storage/.config/tvlink/tvlink
при остановке потока будет выведена информация FFmpeg (кодирование, ошибки и тп). Например преобразование аудио/видео потоков:
PVR TVLINK Client - 2.2.1Во всех системах будет обновлен "PVR TVLINK Client". Будет добавлена опция "FFmpeg плейлист", которая служит для работы с модулем "FFmpeg transcode stream".
