Блок с содержанием первого сообщения

TVLINK: настройка и использование (инструкция обновляется и дополняется).


Телеграм чат по вопросам TVLINK.


Отдельный релиз для MIPSEL (MediaTek MT7621AT, OpenWrt 22.03, Python 3.10 ) собранный под Python-3.10:
Код
http://addons.alexelec.tv/TVLINK-3.2.2-mipsel-py3.10.tar.bz2

- обновлена утилита "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
...
 ------
 V..... h263                 H.263 / H.263-1996
 V....D h264_vaapi           H.264/AVC (VAAPI) (codec h264)
 V....D hevc_vaapi           H.265/HEVC (VAAPI) (codec hevc)
 VFS... mjpeg                MJPEG (Motion JPEG)
 V.S... mpeg2video           MPEG-2 video
 V.S... mpeg4                MPEG-4 part 2
 VF.... png                  PNG (Portable Network Graphics) image
 A..... aac                  AAC (Advanced Audio Coding)
 A..... ac3                  ATSC A/52A (AC-3)
 A..... wmav2                Windows Media Audio 2

Если процессор в Вашей системе (например Intel Pentium N5000 в моем боксе) поддерживает аппаратное преобразование потоков - можно сделать такие настройки:

Before input
Код
 -hwaccel vaapi -hwaccel_output_format vaapi -hwaccel_device /dev/dri/renderD128
Video encoder
Код
h264_vaapi -r 50
Audio encoder
Код
aac -b:a 96k

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".


Ссылка

TVLINK - 3.2.2

  • 27 Ответов
  • 4979 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

Оффлайн Alex

  • Администратор
  • Ветеран
  • *****
  • 1455
  • +14/-0
Re: TVLINK - 3.2.2
« Ответ #15 : 04 Ноября 2022, 16:01:09 »
Alex, а как правильно добавлять плейлисты, чтобы одноимённые с уже имеющимися из других источниками промапленными  каналы автоматически не связывались с ними?
Изначально программа задумывалась, чтобы каналы (одинаковые) мапились автоматически. Если какие-то потоки из этого источника Вам не нужны - просто сделай ниже приоритет этого источника.
Цитировать
Кстати, непонятки и с удалением групп. У меня их расплодилось некоторое количество устаревших пустых от предыдущих уже удалённых источников, но некоторые удалить почему-то не получается.
Видимо у Вас старая база (с предыдущих версий). В новой версии этих проблем не должно быть.
Alex@ELEC

*

Оффлайн pimlab22

  • Пользователь
  • **
  • 89
  • +0/-0
Re: TVLINK - 3.2.2
« Ответ #16 : 04 Ноября 2022, 18:10:38 »
Добрый день.На "CoreELEC (ae-fork) 19.5-Matrix_ae-03" следуя "В CoreELEC ae-fork нужно установить плагин "FFmpeg-tools" по ssh ffmpeg -encoders вижу ,что есть , но заветной галочки в твлинк "FFmpeg transcode stream" не появилось  :(
Добрый. Я проверял на двух приставках - все было нормально. Когда появиться возможность, еще раз проверю.
где он хоть ffmpeg ищет ? я хоть пока туда симлинк брошу

*

Оффлайн Alex

  • Администратор
  • Ветеран
  • *****
  • 1455
  • +14/-0
Re: TVLINK - 3.2.2
« Ответ #17 : 05 Ноября 2022, 07:05:17 »
где он хоть ffmpeg ищет ? я хоть пока туда симлинк брошу
Cимлинк не получиться прописать в каталоги только для чтения (/usr/bin/ - например). Ищет по каталогам указанным в переменной $PATH.
Я догадываюсь в чем проблема. Так как FFmpeg-tools запускается плагином, то и $PATH (с путями к FFmpeg) устанавливается когда стартует Коди. То есть уже после старта TVLINK.
Нужно сделать systemd service (/storage/.config/system.d/) который перед запуском TVLINK установит $PATH.
Alex@ELEC

*

Оффлайн pimlab22

  • Пользователь
  • **
  • 89
  • +0/-0
Re: TVLINK - 3.2.2
« Ответ #18 : 05 Ноября 2022, 11:44:14 »
Цитировать
Нужно сделать systemd service (/storage/.config/system.d/) который перед запуском TVLINK установит $PATH.
Здаюсь , не получается у меня с этим. то что наваял не фурычит. как должно быть?
Хотя я так надеялся, что из коробки заведётся аппаратное ускорение енкодера, но увы как всегда  :(

Может всё таки вариант про фриибсд.......
Код
startup.service
[Unit]
Description=StartUp Path Service
After=network-online.target
Before=tvlink.service

[Service]
Type=oneshot
ExecStart=/storage/.config/startup.path
Код
startup.path
#!/bin/sh

export PATH="$PATH:/usr/bin:/usr/sbin:/storage/.kodi/addons/script.module.torrent2http/bin:/storage/.kodi/addons/tools.ffmpeg-tools/bin:/storage/.kodi/addons/virtual.system-tools/bin"
ПС. по идее, если перестартовать твлинк на запущенной системе, он же должен подхватить патх в котором всё есть и найти ффмпег или как?
« Последнее редактирование: 05 Ноября 2022, 13:24:16 от pimlab22 »

*

Оффлайн Alex

  • Администратор
  • Ветеран
  • *****
  • 1455
  • +14/-0
Re: TVLINK - 3.2.2
« Ответ #19 : 05 Ноября 2022, 14:02:42 »
Здаюсь , не получается у меня с этим. то что наваял не фурычит. как должно быть?
Моя догадка оказалась не верна. Проблема в другом. Нужно сказать Systemd, чтобы он читал профили...
Остановите tvlink.service.
Скопируйте /usr/lib/systemd/system/tvlink.service в /storage/.config/system.d
Замените в tvlink.service "ExecStart" на
Код
ExecStart=-/bin/sh -c ". /etc/profile; /storage/.config/tvlink/tvlink > /dev/null 2>&1"
примените и запустите
Код
systemctl daemon-reload
systemctl start tvlink
Alex@ELEC

*

Оффлайн pimlab22

  • Пользователь
  • **
  • 89
  • +0/-0
Re: TVLINK - 3.2.2
« Ответ #20 : 05 Ноября 2022, 15:17:54 »
Цитировать
Замените в tvlink.service "ExecStart" на
Код
ExecStart=-/bin/sh -c ". /etc/profile; /storage/.config/tvlink/tvlink > /dev/null 2>&1"
Заработало !!  ;D
От меня, если при выравнивании уровня звука возникает рассинхрон звука и видео ,то можно добавить в FFmpeg transcode stream: Audio encoder
Код
acс -ac 2 -ar 48000 -vbr 3 -af aresample=async=1000:first_pts=0,loudnorm=I=-20:TP=-2:LRA=15
 
и с этим легко справляется моя коробочка :)
Ещё вы не рассматривали вариант отключения в твлинке юзеров от просмотра по времени... хочу чтоб ребёнок ночью спал, а не пялился в тв.понимаю, что это можно реализовать файрволом и кроном, но в этой системе мне это пока неизвестно.

*

Оффлайн Alex

  • Администратор
  • Ветеран
  • *****
  • 1455
  • +14/-0
Re: TVLINK - 3.2.2
« Ответ #21 : 05 Ноября 2022, 15:43:57 »
Ещё вы не рассматривали вариант отключения в твлинке юзеров от просмотра по времени.
Нет. Это должна быть функция плеера. Для TVLINK это обработка дополнительного условия при открытии потока. Плохо скажется на скорости включения канала. А такое нужно не всем и не всегда.
Alex@ELEC

*

Оффлайн patkino

  • Пользователь
  • **
  • 18
  • +0/-0
Re: TVLINK - 3.2.2
« Ответ #22 : 11 Ноября 2022, 11:15:34 »
TVLINK - 3.2.2 для ARM64 (Rockchip RK3399, OpenWRT, Python-3.7 )
Подскажите, как установить службу tvlink на Libreelec RK3399?

*

Оффлайн Alex

  • Администратор
  • Ветеран
  • *****
  • 1455
  • +14/-0
Re: TVLINK - 3.2.2
« Ответ #23 : 11 Ноября 2022, 15:48:56 »
Подскажите, как установить службу tvlink на Libreelec RK3399?
https://alexelec.tv/ustanovka-tvlink-na-router-d-team-newifi-d2-openwrt/
Alex@ELEC

*

Оффлайн patkino

  • Пользователь
  • **
  • 18
  • +0/-0
Re: TVLINK - 3.2.2
« Ответ #24 : 11 Ноября 2022, 17:53:23 »
Подскажите, как установить службу tvlink на Libreelec RK3399?
https://alexelec.tv/ustanovka-tvlink-na-router-d-team-newifi-d2-openwrt/
File "./tvlink", line 4, in <module>
    from server import start_tvlink
  File "server.py", line 36, in init server
  File "core.py", line 533, in init core
  File "./libs/streamlink/__init__.py", line 19, in <module>
    from streamlink.api import streams
  File "./libs/streamlink/api.py", line 1, in <module>
    from streamlink.session import Streamlink
  File "./libs/streamlink/session.py", line 8, in <module>
    import urllib3.util.connection as urllib3_util_connection
ModuleNotFoundError: No module named 'urllib3'




Зависимость Urllib3 в системе присутствует

*

Оффлайн Alex

  • Администратор
  • Ветеран
  • *****
  • 1455
  • +14/-0
Re: TVLINK - 3.2.2
« Ответ #25 : 11 Ноября 2022, 19:56:58 »
Зависимость Urllib3 в системе присутствует
В какой системе и по какому пути?
Проверьте из командной строки:
Код
python3
import urllib3.util.connection
Alex@ELEC

*

Оффлайн patkino

  • Пользователь
  • **
  • 18
  • +0/-0
Re: TVLINK - 3.2.2
« Ответ #26 : 11 Ноября 2022, 20:17:29 »
В какой системе и по какому пути?
Libreelec 10.0.3 Rockchip
Urlllib - в списке зависимостей дополнений в kodi
А реально, видимо его нет -
На команду ответ даёт:
ModuleNotFoundError: No module named 'urllib3'.
Как этот модуль поставить?
Tvlink распаковываю в /.config/tvlink

*

Оффлайн Alex

  • Администратор
  • Ветеран
  • *****
  • 1455
  • +14/-0
Re: TVLINK - 3.2.2
« Ответ #27 : 12 Ноября 2022, 06:41:29 »
Как этот модуль поставить?
В готовой системе - никак.
Alex@ELEC