TVLINK - 4.1.2

  • 12 Ответов
  • 1233 Просмотров

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

*

Оффлайн Alex

  • Администратор
  • Ветеран
  • *****
  • 1459
  • +14/-0
TVLINK - 4.1.2
« : 02 Марта 2024, 15:25:53 »
TVLINK: установка, настройка и использование.

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

- модули Streamlink 6.6.2
- изменения в настройках потоков "Streamer settings"
- параметр "Stream timeout" переделан и переименован в "Threads job timeout"
- добавлена возможность отдельно устанавливать таймауты для соединения и чтения данных в опциях "General HTTP timeout" и "HLS segment timeout"
- изменены настройки потоков для источников на стр. "Sources"
- при изменении "дефолтных" настроек потоков на стр. "Sources", меняется цвет иконки настроек
- увеличены диапазоны Приоритета (Prio) и Период обновления источников (Update period). До 50-ти и 96-и, соответственно.
- улучшена функция переодической перезагрузки настроек "Periodic reload settings"
- обновлены некоторые плагины, удалены нерабочие
- полностью решена проблема с закрытием сокетов после остановки потока

Проблема с закрытием сокетов была актуальна с начала существования программы и не давала мне покоя. В основном ее видели те, у кого TVLINK работает в режиме 24/7.
Пришлось долго копаться в исходниках Streamlink, чтобы выявить и устранить эту проблему. Наконец, решение найдено )

UDP
Релиз 4.1.1 удален из-за ошибки которая возникала при обновлении программы (подробнее об ошибке здесь).

« Последнее редактирование: 25 Марта 2024, 14:38:04 от Alex »
Alex@ELEC

*

Оффлайн Alex

  • Администратор
  • Ветеран
  • *****
  • 1459
  • +14/-0
Вначале определим, чем отличаются таймауты соединения и чтения данных (Connect timeout и Read Data timeout).

Connect timeout.
Когда клиент (в этом случае TVLINK выступает клиентом по отношению к сайту или провайдеру откуда он запрашивает потоки) инициализирует соединение, он должен получить ответ от сервера (специальный код ответа). Не важно какой именно ответ поступит от сервера. Это может быть ответ 200 (соединение установлено) или 302 (переадресация) или любой другой, главное, чтобы сервер ответил. Если в течении времени указанного в таймауте соединения (Connect timeout) ответ от сервера не поступил, клиент сбросит соединение.

Read Data timeout.
Когда клиент получил ответ 200 (соединение установлено) от сервера, он начинает загружать (читать) данные которые отдает сервер. Если в течении времени указанного в таймауте чтения данных (Read Data timeout) сервер не передает информацию, клиент сбросит соединение.

Теперь определимся с форматами потоков.
Самые распространённые из них это: TS и HLS.
«TS» это по сути тоже самое, как если бы вы загружали какой-то файл в браузере. Клиент делает запрос и, если получает ответ 200, просто последовательно получает данные. Данные естественно идут в один поток и, если возникают проблемы по пути следования трафика, это непременно вызовет проблемы с видео. То есть, для IPTV через интернет не лучшее решение. Больше подходит для локальной сети.
«HLS» это тот же самый «TS» (упрощенно конечно) но порезанный на куски (сегменты). За счет того, что эти сегменты, это уже записанные файлы (в отличии от TS который идет в реальном времени) и их (этих файлов) несколько, клиент имеет возможность скачивать одновременно несколько сегментов. Что в свою очередь помогает бороться с проблемами трафика, и соответственно больше подходит для вещания IPTV через интернет.

Теперь непосредственно о параметрах «TVLINK».

«General HTTP timeout Connect/Data».
Если у вас TS-поток, именно эти таймауты будут работать. «HLS segment» таймауты принимать участие для таких потоков не будут.
Если у вас HLS-поток, «General HTTP» таймауты будут работать, когда вы получаете плейлисты со списками разрешений (провайдер может предоставлять несколько вариантов качества потоков) или сегментов. Плейлисты это текстовые файлы, которые содержат ссылки на другие плейлисты (если это список качества потоков) или ссылки на видео сегменты.

«HLS segment timeout Connect/Data».
Эти таймауты работают непосредственно с сегментами (видео файлами). Хотя в названии этого параметра стоит «HLS», но эти таймауты работают и с другими форматами сегментированных потоков. Например, «DASH».
В простом случае (без списка качества потоков) для HLS-потоков это будет выглядеть так:
  • получение списка сегментов - «General HTTP timeout»
  • загрузка сегмента 1 - «HLS segment timeout»
  • загрузка сегмента 2 - «HLS segment timeout»
  • загрузка сегмента 3 - «HLS segment timeout»
  • получение нового списка сегментов - «General HTTP timeout»
  • загрузка сегмента 4 - «HLS segment timeout»
  • загрузка сегмента 5 - «HLS segment timeout»
  • загрузка сегмента 6 - «HLS segment timeout»
  • получение нового списка сегментов - «General HTTP timeout»
  • и так далее…
«HLS segment queue threshold».
Это параметр (таймаут) тоже относится к HLS-потокам. Список HLS-сегментов (плейлист) содержит переменную где указана длительность видео в сегменте. Эта переменная используется TVLINK для того чтобы знать через какое время запросить новый файл сегментов. Сервер, постоянно обновляет это список, как только закончена запись нового сегмента.
«HLS segment queue threshold» это число на которое будет умножено переменная длительности сегмента. И если в течении времени (которое мы получили при умножении) на сервере не обновился список сегментов, клиент разорвет соединение.
Например, в списке указано что длительность сегмента 6 секунд. «HLS segment queue threshold» у нас равно трем. Через 18 секунд клиент разорвет соединение если на сервере нет нового сегмента.

«Threads job timeout».
Это таймаут внутреннего цикла «Streamlink» который читает данные со входа и записывает в выходной поток. Если в течении указанного времени через цикл не проходят данные, он прекращает работу. Соответственно любое соединение закрывается. Закрывается это в теории. Но в силу того, что модули «Streamlink» не идеальны соединения могут остаться в зависшем состоянии (остаться открытыми сокеты). Поэтому я рекомендую ставить здесь значение больше чем таймауты в «General HTTP» и «HLS segment».

«Stream retry count».
Число повторных попыток соединения при срабатывании «General HTTP» и «HLS segment» таймаутов. Думаю, здесь добавить не чего.
Alex@ELEC

*

Оффлайн pimlab22

  • Пользователь
  • **
  • 89
  • +0/-0
Re: TVLINK - 4.1.2
« Ответ #2 : 23 Марта 2024, 13:21:38 »
Добрый день.
Хотел сообщить, что в  tvlink/picons адрес сервера логотипов поменялся на epg.one

Код
13c13
< main_url = "https://epg.one/"
---
> main_url = "https://epg.it999.ru/"
33,34c33,34
<     zip_url = main_url + "epgone_transparent_logo.zip"
<     zip_path = os.path.join(temp_dir, 'epgone_transparent_logo.zip')
---
>     zip_url = main_url + "it999_transparent_logo.zip"
>     zip_path = os.path.join(temp_dir, 'it999_transparent_logo.zip')
37,38c37,38
<     zip_url = main_url + "epgone_dark_logo.zip"
<     zip_path = os.path.join(temp_dir, 'epgone_dark_logo.zip')
---
>     zip_url = main_url + "it999_dark_logo.zip"
>     zip_path = os.path.join(temp_dir, 'it999_dark_logo.zip')
Также можете помочь в запуске твлинка.
Поднял Ubuntu jammy в клетке, но что то не запускается.
установленные пакеты
Код
idle-python3.11/jammy-updates,now 3.11.0~rc1-1~22.04 all [установлен, автоматически]
libpython3-stdlib/jammy-security,jammy-updates,now 3.10.6-1~22.04 amd64 [установлен]
libpython3.10-minimal/jammy-security,jammy-updates,now 3.10.12-1~22.04.3 amd64 [установлен]
libpython3.10-stdlib/jammy-security,jammy-updates,now 3.10.12-1~22.04.3 amd64 [установлен]
libpython3.11-minimal/jammy-updates,now 3.11.0~rc1-1~22.04 amd64 [установлен, автоматически]
libpython3.11-stdlib/jammy-updates,now 3.11.0~rc1-1~22.04 amd64 [установлен, автоматически]
libpython3.11-testsuite/jammy-updates,now 3.11.0~rc1-1~22.04 all [установлен, автоматически]
python-apt-common/jammy-updates,now 2.4.0ubuntu3 all [установлен]
python3-apt/jammy-updates,now 2.4.0ubuntu3 amd64 [установлен]
python3-blinker/jammy,now 1.4+dfsg1-0.4 all [установлен, автоматически]
python3-bs4/jammy,now 4.10.0-2 all [установлен, автоматически]
python3-certifi/jammy,now 2020.6.20-1 all [установлен, автоматически]
python3-cffi-backend/jammy,now 1.15.0-1build2 amd64 [установлен, автоматически]
python3-chardet/jammy,now 4.0.0-1 all [установлен, автоматически]
python3-cryptography/jammy-security,jammy-updates,now 3.4.8-1ubuntu2.2 amd64 [установлен, автоматически]
python3-dbus/jammy,now 1.2.18-3build1 amd64 [установлен]
python3-distro-info/jammy-updates,now 1.1ubuntu0.2 all [установлен, автоматически]
python3-distro/jammy,now 1.7.0-1 all [установлен, автоматически]
python3-distutils/jammy-security,jammy-updates,now 3.10.8-1~22.04 all [установлен, автоматически]
python3-gdbm/jammy-security,jammy-updates,now 3.10.8-1~22.04 amd64 [установлен, автоматически]
python3-gi/jammy-updates,now 3.42.1-0ubuntu1 amd64 [установлен]
python3-html5lib/jammy,now 1.1-3 all [установлен, автоматически]
python3-httplib2/jammy,now 0.20.2-2 all [установлен, автоматически]
python3-idna/jammy,now 3.3-1 all [установлен, автоматически]
python3-importlib-metadata/jammy,now 4.6.4-1 all [установлен, автоматически]
python3-isodate/jammy,now 0.6.1-1 all [установлен]
python3-jeepney/jammy,now 0.7.1-3 all [установлен, автоматически]
python3-jwt/jammy-security,jammy-updates,now 2.3.0-1ubuntu0.2 all [установлен, автоматически]
python3-keyring/jammy,now 23.5.0-1 all [установлен, автоматически]
python3-launchpadlib/jammy,now 1.10.16-1 all [установлен, автоматически]
python3-lazr.restfulclient/jammy,now 0.14.4-1 all [установлен, автоматически]
python3-lazr.uri/jammy,now 1.0.6-2 all [установлен, автоматически]
python3-lib2to3/jammy-security,jammy-updates,now 3.10.8-1~22.04 all [установлен, автоматически]
python3-lxml/jammy,now 4.8.0-1build1 amd64 [установлен]
python3-minimal/jammy-security,jammy-updates,now 3.10.6-1~22.04 amd64 [установлен]
python3-more-itertools/jammy,now 8.10.0-2 all [установлен, автоматически]
python3-netifaces/jammy,now 0.11.0-1build2 amd64 [установлен]
python3-oauthlib/jammy-security,jammy-updates,now 3.2.0-1ubuntu0.1 all [установлен, автоматически]
python3-pip-whl/jammy-security,jammy-updates,now 22.0.2+dfsg-1ubuntu0.4 all [установлен, автоматически]
python3-pkg-resources/jammy-security,jammy-updates,now 59.6.0-1.2ubuntu0.22.04.1 all [установлен]
python3-pycountry/jammy,now 20.7.3+ds1-3 all [установлен]
python3-pycryptodome/jammy-security,jammy-updates,now 3.11.0+dfsg1-3ubuntu0.1 amd64 [установлен]
python3-pyparsing/jammy,now 2.4.7-1 all [установлен, автоматически]
python3-requests/jammy-security,jammy-updates,now 2.25.1+dfsg-2ubuntu0.1 all [установлен]
python3-secretstorage/jammy,now 3.3.1-1 all [установлен, автоматически]
python3-setuptools-whl/jammy-security,jammy-updates,now 59.6.0-1.2ubuntu0.22.04.1 all [установлен, автоматически]
python3-six/jammy,now 1.16.0-3ubuntu1 all [установлен, автоматически]
python3-socks/jammy,now 1.7.1+dfsg-1 all [установлен]
python3-software-properties/jammy-updates,now 0.99.22.9 all [установлен, автоматически]
python3-soupsieve/jammy,now 2.3.1-1 all [установлен, автоматически]
python3-tk/jammy-security,jammy-updates,now 3.10.8-1~22.04 amd64 [установлен, автоматически]
python3-urllib3/jammy-security,jammy-updates,now 1.26.5-1~exp1ubuntu0.1 all [установлен, автоматически]
python3-wadllib/jammy,now 1.3.6-1 all [установлен, автоматически]
python3-webencodings/jammy,now 0.5.1-4 all [установлен, автоматически]
python3-websocket/jammy,now 1.2.3-1 all [установлен]
python3-yaml/jammy,now 5.4.1-1ubuntu1 amd64 [установлен]
python3-zipp/jammy,now 1.0.0-3 all [установлен, автоматически]
python3.10-minimal/jammy-security,jammy-updates,now 3.10.12-1~22.04.3 amd64 [установлен]
python3.10/jammy-security,jammy-updates,now 3.10.12-1~22.04.3 amd64 [установлен]
python3.11-doc/jammy-updates,now 3.11.0~rc1-1~22.04 all [установлен, автоматически]
python3.11-examples/jammy-updates,now 3.11.0~rc1-1~22.04 all [установлен, автоматически]
python3.11-full/jammy-updates,now 3.11.0~rc1-1~22.04 amd64 [установлен]
python3.11-minimal/jammy-updates,now 3.11.0~rc1-1~22.04 amd64 [установлен, автоматически]
python3.11-venv/jammy-updates,now 3.11.0~rc1-1~22.04 amd64 [установлен, автоматически]
python3.11/jammy-updates,now 3.11.0~rc1-1~22.04 amd64 [установлен, автоматически]
python3/jammy-security,jammy-updates,now 3.10.6-1~22.04 amd64 [установлен]


ошибка при запуске в ручную , при том что python3-lxml установлен
Код
Traceback (most recent call last):
  File "/opt/tvlink/tvlink", line 4, in <module>
    from server import start_tvlink
  File "server.py", line 29, in init server
  File "utils.py", line 31, in init utils
  File "/opt/tvlink/libs/streamlink/__init__.py", line 19, in <module>
    from streamlink.api import streams
  File "/opt/tvlink/libs/streamlink/api.py", line 1, in <module>
    from streamlink.session import Streamlink
  File "/opt/tvlink/libs/streamlink/session/__init__.py", line 1, in <module>
    from streamlink.session.session import Streamlink
  File "/opt/tvlink/libs/streamlink/session/session.py", line 9, in <module>
    from streamlink.logger import StreamlinkLogger
  File "/opt/tvlink/libs/streamlink/logger.py", line 14, in <module>
    from streamlink.utils.times import fromlocaltimestamp
  File "/opt/tvlink/libs/streamlink/utils/__init__.py", line 5, in <module>
    from streamlink.utils.parse import parse_html, parse_json, parse_qsd, parse_xml
  File "/opt/tvlink/libs/streamlink/utils/parse.py", line 5, in <module>
    from lxml.etree import HTML, XML
ModuleNotFoundError: No module named 'lxml.etree'
« Последнее редактирование: 23 Марта 2024, 13:31:18 от pimlab22 »

*

Оффлайн Alex

  • Администратор
  • Ветеран
  • *****
  • 1459
  • +14/-0
Re: TVLINK - 4.1.2
« Ответ #3 : 23 Марта 2024, 14:29:25 »
Добрый день.
Хотел сообщить, что в  tvlink/picons адрес сервера логотипов поменялся на epg.one
Спасибо, сделаю.
ошибка при запуске в ручную , при том что python3-lxml установлен
Установлен, но видимо он стал в каталог python3.10, 3.11 его не видит. Удалите и поставьте с помощью PIP.
Alex@ELEC

*

Оффлайн pimlab22

  • Пользователь
  • **
  • 89
  • +0/-0
Re: TVLINK - 4.1.2
« Ответ #4 : 23 Марта 2024, 16:56:27 »
на всякий случай спрашиваю...
это теперь не актуально ?
Код
cd /usr/lib/python3/dist-packages/Cryptodome
find -name *cpython-310-x86_64-linux-gnu.so -exec rename ‘s/\.cpython-310-x86_64-linux-gnu//gi’ ‘{}’ \;
apt purge python3-crypto
cd ..
ln -s Cryptodome Crypto

*

Оффлайн pimlab22

  • Пользователь
  • **
  • 89
  • +0/-0
Re: TVLINK - 4.1.2
« Ответ #5 : 23 Марта 2024, 17:11:35 »
Цитировать
Установлен, но видимо он стал в каталог python3.10, 3.11 его не видит. Удалите и поставьте с помощью PIP.

Где должен быть python3-lxml?
сейчас нашёл что-то подобное
Код
/lib/python3/dist-packages/lxml/lxml.etree.h

*

Оффлайн Alex

  • Администратор
  • Ветеран
  • *****
  • 1459
  • +14/-0
Re: TVLINK - 4.1.2
« Ответ #6 : 24 Марта 2024, 08:36:27 »
на всякий случай спрашиваю...
это теперь не актуально ?
Не актуально, если ставите по иструкции https://wiki.alexelec.tv/install-update/#ubuntu
« Последнее редактирование: 24 Марта 2024, 08:38:28 от Alex »
Alex@ELEC

*

Оффлайн Alex

  • Администратор
  • Ветеран
  • *****
  • 1459
  • +14/-0
Re: TVLINK - 4.1.2
« Ответ #7 : 24 Марта 2024, 08:37:38 »
Где должен быть python3-lxml?
сейчас нашёл что-то подобное
Видимо сломан пакет python3-lxml. Используйте pip.
Alex@ELEC

*

Оффлайн pimlab22

  • Пользователь
  • **
  • 89
  • +0/-0
Re: TVLINK - 4.1.2
« Ответ #8 : 25 Марта 2024, 10:41:29 »
Видимо сломан пакет python3-lxml. Используйте pip.
С pip вроде разобрался... теперь просто зависает и ничего не происходит ,если запустить в ручную.
вопрос вот в чем , как твлинк определяет сетевые карты и где ищет?
Просто убунта в клетке под фреевсд не имеет 100% совместимости..
Сеть в убунте есть. все обновления и тд проходят, но вот
Код
ip addr
ничего не выводит ,а вот
Код
 ifconfig 
или
Код
 lshw -C network
или
Код
netstat -rn 
показывают

*

Оффлайн Alex

  • Администратор
  • Ветеран
  • *****
  • 1459
  • +14/-0
Re: TVLINK - 4.1.2
« Ответ #9 : 25 Марта 2024, 14:59:44 »
вопрос вот в чем , как твлинк определяет сетевые карты и где ищет?
Используется модуль socket: https://docs.python.org/3.11/library/socket.html
Попробуйте использовать файл «ip-address.ext».
Alex@ELEC

*

Оффлайн pimlab22

  • Пользователь
  • **
  • 89
  • +0/-0
Re: TVLINK - 4.1.2
« Ответ #10 : 26 Марта 2024, 10:45:43 »
Попробуйте использовать файл «ip-address.ext».
к сожалению это ничего не поменяло :(

*

Оффлайн Alextuzov

  • Постоялец
  • ***
  • 192
  • +1/-0
  • Александр
Re: TVLINK - 4.1.2
« Ответ #11 : 27 Марта 2024, 08:43:47 »
Попробуйте использовать файл «ip-address.ext».
к сожалению это ничего не поменяло :(
А вы из какой страны? Дело в том что tvlink не работает в РФ и РБ, геоблок. Может у вас в этом дело?
1. LibreELEC (ae-fork) GBM x86_64_v2 v12.0-rc2-01- основной Box IPTV
2. Intel PC GL2 LibreELEC (ae-fork) GBM x86_64_v2 v12.0-rc2-01 (как сервер TVLINK)
3. Beelink S922 CoreELEC (ae-fork) 20.3-Nexus_ae-01
4. Dealdig S912 AlexElec v 3.3.9 (S9XX-DualBoot)
5. T99Mini S905D CoreELEC (ae-fork) 20.3-Nexus_

*

Оффлайн pimlab22

  • Пользователь
  • **
  • 89
  • +0/-0
Re: TVLINK - 4.1.2
« Ответ #12 : 27 Марта 2024, 09:57:25 »
А вы из какой страны? Дело в том что tvlink не работает в РФ и РБ, геоблок. Может у вас в этом дело?
Нет дело не в этом, на тв.приставке все работает.А вот в чем.
Просто убунта в клетке под фреевсд не имеет 100% совместимости..
Хотел запустить без виртуализации так сказать на ядре фреевсд, но как обычно не особо катит.. в виртуалке ,то все запускается, но там как-то хитро надо мутить чтоб пробросить доступ к видюхе для аппаратного энкодера h264/h265