Форум проекта Alex@ELEC

Информация и Общие Темы => IPTV => TVLINK => Тема начата: Alex от 24 Октября 2022, 19:42:43

Название: TVLINK - 3.2.2
Отправлено: Alex от 24 Октября 2022, 19:42:43

TVLINK: настройка и использование (https://alexelec.tv/nastrojka-tvlink/) (инструкция обновляется и дополняется).


Телеграм чат (https://t.me/tvlinkae) по вопросам 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".

(https://i.ibb.co/WzfH2vH/ffmpeg-01.png)

Опции - это параметры командной строки FFmpeg (https://ffmpeg.org/ffmpeg.html). Назначение полей:

Чтобы было понятно, какая опция куда будет вставлена - строка параметров FFmpeg  по умолчанию  выглядит так (упрощенная схема):

Цитировать
/usr/bin/ffmpeg -err_detect ignore_err -stream_loop -1 [Before input] -i http://channel.stream (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".

(https://i.ibb.co/pwrmSrK/ffmpeg-02.png)

Это означает, что аудио всех потоков будет выдаваться в формате "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 (http://ip-address:port/ffmpeglist)).

(https://i.ibb.co/ts8r9H3/ffmpeg-03.png)

Включение "FFmpeg transcode stream" не влияет на основной модуль вешания. Они работают параллельно. Вы можете одновременно подключить одних клиентов к обычному плейлисту (playlist), а других к "FFmpeg transcode stream" плейлисту (ffmpeglist).
По ссылке "http://ip-address:port/ffmpeglist (http://ip-address:port/ffmpeglist)" - Вы всегда можете получить плейлист, даже если "FFmpeg transcode stream" отключен и в системе нет FFmpeg. Поэтому будьте внимательны.

Если включить "Debug Streams" и запустить TVLINK из командной строки
Код
/storage/.config/tvlink/tvlink
при остановке потока будет выведена информация FFmpeg (кодирование, ошибки и тп). Например преобразование аудио/видео потоков:

(https://i.ibb.co/cJRcRyz/ffmpeg-04.png)

PVR TVLINK Client - 2.2.1

Во всех системах будет обновлен "PVR TVLINK Client". Будет добавлена опция "FFmpeg плейлист", которая служит для работы с модулем "FFmpeg transcode stream".

(https://i.ibb.co/2MzfCx7/ffmpeg-05.png)
Название: Re: TVLINK - 3.2.2
Отправлено: pimlab22 от 25 Октября 2022, 09:02:11
может сразу сделать выбор потока ffmpeg или нет в TVLINK simple control в стандартном плайлисте с запоминанием для канала и было бы супер если это завелось под kodi19 тоже :)
сегодня попробую пробросить в виртуалку с твлинк аппаратный ваапи
Название: Re: TVLINK - 3.2.2
Отправлено: Alex от 25 Октября 2022, 10:44:10
может сразу сделать выбор потока ffmpeg или нет в TVLINK simple control в стандартном плайлисте с запоминанием для канала
На данный момент так не получиться. PVR TVLINK получает либо обычный, либо ffmpeg плейлист. Может в будущем я это обдумаю.
Название: Re: TVLINK - 3.2.2
Отправлено: vigera от 25 Октября 2022, 13:33:11
Установил на KII Pro S905 c AE 3.3.4. С дефолтными установками FFmpeg transcode stream, тремя моими плейлистами (основной из которых tsn-full) и большинством Ваших аддонов  сеть из ffmpeglist в Tvheadend работает отлично!
Спасибо большое! :)
Название: Re: TVLINK - 3.2.2
Отправлено: Alex от 25 Октября 2022, 13:46:04
Спасибо большое!
Пожалуйста )
Название: Re: TVLINK - 3.2.2
Отправлено: vigera от 25 Октября 2022, 14:16:31
Alex, ещё одна небольшая хотелка. Нельзя ли в следующих релизах сделать объединение групп каналов по типу как это сейчас реализовано с отдельными сервисами?Чтобы все каналы из одной группы скопом переносились в другую выбранную.

А то с множеством плейлистов и аддонов у меня расплодилось куча групп похожего содержания со слегка отличающимися названиями и сейчас приходится сводить каналы из них в одну по одному каждый вручную.


Название: Re: TVLINK - 3.2.2
Отправлено: Alex от 25 Октября 2022, 15:01:09
Alex, ещё одна небольшая хотелка. Нельзя ли в следующих релизах сделать объединение групп каналов по типу как это сейчас реализовано с отдельными сервисами?Чтобы все каналы из одной группы скопом переносились в другую выбранную.
Подумаю...
Название: Re: TVLINK - 3.2.2
Отправлено: pimlab22 от 26 Октября 2022, 09:09:36
Возможно будет кому полезно нормализовать весь звук силами ffmpeg со всех каналов к определенному значению, правда не знаю как с этим справятся коробочки.
aac -vbr 3 -ac 2 -ar 44100 -af loudnorm=I=-18:TP=-1:LRA=15
Название: Re: TVLINK - 3.2.2
Отправлено: vigera от 28 Октября 2022, 11:31:24
Alex, ещё из хотелок. В веб-интерфейсе Tvlink возле ссылки на источник было бы неплохо видеть количество непромапленных каналов, а также число вновь добавленных (удалённых) после последнего обновления источника.
Название: Re: TVLINK - 3.2.2
Отправлено: Alex от 28 Октября 2022, 12:03:14
Alex, ещё из хотелок. В веб-интерфейсе Tvlink возле ссылки на источник было бы неплохо видеть количество непромапленных каналов, а также число вновь добавленных (удалённых) после последнего обновления источника.
Сделать не проблема, но это не рационально. Вывод этих циферок в несколько раз (кратно количеству источников) замедлит открытие страницы. Но может я что-то придумаю...
Название: Re: TVLINK - 3.2.2
Отправлено: vigera от 29 Октября 2022, 15:08:04
Вывод этих циферок в несколько раз (кратно количеству источников) замедлит открытие страницы. Но может я что-то придумаю...
Как вариант - вместо подсчёта и вывода цифр организовать цветной индикатор типа зелёный кружок - в источнике добавились новые каналы, красный - какие-то пропали. И удалить кликабельность по ссылке на источник, если в нем все каналы промаплены.
Название: Re: TVLINK - 3.2.2
Отправлено: Alex от 29 Октября 2022, 16:35:45
Как вариант - вместо подсчёта и вывода цифр организовать цветной индикатор типа зелёный кружок - в источнике добавились новые каналы, красный - какие-то пропали.
Без разницы, будут это цифры или кружочки - время будет тоже самое. Поясню: сейчас при открытии страницы делается всего один запрос к базе данных, где уже есть все нужные данные.
То, что Вы просите - потребует дополнительно делать запросы для каждого источника, плюс в цикле перебирать ссылки (тоже для каждого источника).
Если найду способ сделать это быстро - тогда решу вопрос.
Название: Re: TVLINK - 3.2.2
Отправлено: pimlab22 от 04 Ноября 2022, 09:11:56
Добрый день.На "CoreELEC (ae-fork) 19.5-Matrix_ae-03" следуя "В CoreELEC ae-fork нужно установить плагин "FFmpeg-tools" по ssh ffmpeg -encoders вижу ,что есть , но заветной галочки в твлинк "FFmpeg transcode stream" не появилось  :(
Название: Re: TVLINK - 3.2.2
Отправлено: vigera от 04 Ноября 2022, 12:01:15
Alex, а как правильно добавлять плейлисты, чтобы одноимённые с уже имеющимися из других источниками промапленными  каналы автоматически не связывались с ними?
А то добавил новый плейлист со 155-ю каналами, из которого вручную собирался промапить лишь 3-4, а из него около половины автоматом связались с ранее имевшимися, а незамапленными остались лишь 81.
Галки с "Add channels" и "New channels", естественно, сняты.
Также вручную отмапил два нужных мне канала из незамапленных автоматом и теперь не могу их найти в общем списке. В алфавитном списке отсутствуют, соединённые с похожим названием пересмотрел - там тоже их нет. Группа в которой они должны бы оказаться - "СПОРТ", почему-то тоже не создалась (но давно имеется группа "Спорт, в которой их не вижу").
Кстати, непонятки и с удалением групп. У меня их расплодилось некоторое количество устаревших пустых от предыдущих уже удалённых источников, но некоторые удалить почему-то не получается.
P.S. Открыл sql-редактором channels.db. В нём видно что нужные каналы добавились и находятся в группе "СПОРТ", которую, почему-то из веб-интерфейса не вижу.
Название: Re: TVLINK - 3.2.2
Отправлено: Alex от 04 Ноября 2022, 15:54:23
Добрый день.На "CoreELEC (ae-fork) 19.5-Matrix_ae-03" следуя "В CoreELEC ae-fork нужно установить плагин "FFmpeg-tools" по ssh ffmpeg -encoders вижу ,что есть , но заветной галочки в твлинк "FFmpeg transcode stream" не появилось  :(
Добрый. Я проверял на двух приставках - все было нормально. Когда появиться возможность, еще раз проверю.
Название: Re: TVLINK - 3.2.2
Отправлено: Alex от 04 Ноября 2022, 16:01:09
Alex, а как правильно добавлять плейлисты, чтобы одноимённые с уже имеющимися из других источниками промапленными  каналы автоматически не связывались с ними?
Изначально программа задумывалась, чтобы каналы (одинаковые) мапились автоматически. Если какие-то потоки из этого источника Вам не нужны - просто сделай ниже приоритет этого источника.
Цитировать
Кстати, непонятки и с удалением групп. У меня их расплодилось некоторое количество устаревших пустых от предыдущих уже удалённых источников, но некоторые удалить почему-то не получается.
Видимо у Вас старая база (с предыдущих версий). В новой версии этих проблем не должно быть.
Название: Re: TVLINK - 3.2.2
Отправлено: pimlab22 от 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 ищет ? я хоть пока туда симлинк брошу
Название: Re: TVLINK - 3.2.2
Отправлено: Alex от 05 Ноября 2022, 07:05:17
где он хоть ffmpeg ищет ? я хоть пока туда симлинк брошу
Cимлинк не получиться прописать в каталоги только для чтения (/usr/bin/ - например). Ищет по каталогам указанным в переменной $PATH.
Я догадываюсь в чем проблема. Так как FFmpeg-tools запускается плагином, то и $PATH (с путями к FFmpeg) устанавливается когда стартует Коди. То есть уже после старта TVLINK.
Нужно сделать systemd service (/storage/.config/system.d/) который перед запуском TVLINK установит $PATH.
Название: Re: TVLINK - 3.2.2
Отправлено: pimlab22 от 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"
ПС. по идее, если перестартовать твлинк на запущенной системе, он же должен подхватить патх в котором всё есть и найти ффмпег или как?
Название: Re: TVLINK - 3.2.2
Отправлено: Alex от 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
Название: Re: TVLINK - 3.2.2
Отправлено: pimlab22 от 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
 
и с этим легко справляется моя коробочка :)
Ещё вы не рассматривали вариант отключения в твлинке юзеров от просмотра по времени... хочу чтоб ребёнок ночью спал, а не пялился в тв.понимаю, что это можно реализовать файрволом и кроном, но в этой системе мне это пока неизвестно.
Название: Re: TVLINK - 3.2.2
Отправлено: Alex от 05 Ноября 2022, 15:43:57
Ещё вы не рассматривали вариант отключения в твлинке юзеров от просмотра по времени.
Нет. Это должна быть функция плеера. Для TVLINK это обработка дополнительного условия при открытии потока. Плохо скажется на скорости включения канала. А такое нужно не всем и не всегда.
Название: Re: TVLINK - 3.2.2
Отправлено: patkino от 11 Ноября 2022, 11:15:34
TVLINK - 3.2.2 для ARM64 (Rockchip RK3399, OpenWRT, Python-3.7 )
Подскажите, как установить службу tvlink на Libreelec RK3399?
Название: Re: TVLINK - 3.2.2
Отправлено: Alex от 11 Ноября 2022, 15:48:56
Подскажите, как установить службу tvlink на Libreelec RK3399?
https://alexelec.tv/ustanovka-tvlink-na-router-d-team-newifi-d2-openwrt/
Название: Re: TVLINK - 3.2.2
Отправлено: patkino от 11 Ноября 2022, 17:53:23
Подскажите, как установить службу tvlink на Libreelec RK3399?
https://alexelec.tv/ustanovka-tvlink-na-router-d-team-newifi-d2-openwrt/ (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 в системе присутствует
Название: Re: TVLINK - 3.2.2
Отправлено: Alex от 11 Ноября 2022, 19:56:58
Зависимость Urllib3 в системе присутствует
В какой системе и по какому пути?
Проверьте из командной строки:
Код
python3
import urllib3.util.connection
Название: Re: TVLINK - 3.2.2
Отправлено: patkino от 11 Ноября 2022, 20:17:29
В какой системе и по какому пути?
Libreelec 10.0.3 Rockchip
Urlllib - в списке зависимостей дополнений в kodi
А реально, видимо его нет -
На команду ответ даёт:
ModuleNotFoundError: No module named 'urllib3'.
Как этот модуль поставить?
Tvlink распаковываю в /.config/tvlink
Название: Re: TVLINK - 3.2.2
Отправлено: Alex от 12 Ноября 2022, 06:41:29
Как этот модуль поставить?
В готовой системе - никак.