Налаштування сервера та потоків

Дана інформація стосується налаштувань на сторінці «Settings».

Налаштування сервера.

  • «Server port» – задає порт на якому «TVLINK» приймає запити. Порт у потоків буде більший на одиницю: “Server port + 1”.
  • «Playlist IP» – це адреса, яку «TVLINK» буде використовувати для плейлистів (коли «Auto playlist IP» вимкнено). Вибирається із списку.
  • «Auto playlist IP» – якщо ввімкнуто, «TVLINK» буде використовувати ту IP-адресу в плейлисті, на яку робить запит клієнт.
  • «Check internet IP» – IP-адреса за якою «TVLINK» перевіряє роботу інтернет. За замовчуванням використовуються адреса «8.8.8.8». Якщо вам потрібно змінити цю адресу перед запуском програми, створіть файл «check-internet.ip» в каталозі «tvlink» и впишіть туди потрібну адресу.
  • «Check internet max time» – максимальний час, протягом якого «TVLINK» перевіряє роботу інтернет. Програма не запуститься поки у неї не буде доступу до інтернет.
  • «Refresh sources at startup» – оновлювати джерела при старті програми.
  • «Refresh sources at playlist» – оновлювати джерела при запиті плейлиста.
  • «Create static playlist» – створює статичні файли плейлистів (основний і для профілів) в каталозі «tvlink/playlist» і видає його при запиті клієнтів. Це набагато пришвидшує роботу, коли ви маєте велику кількість каналів (100 і більше). Статичний плейлист створюється (оновлюється) кожного разу коли автоматично оновлюються джерела каналів, або ви натискаєте на «Update all sources» на сторінці «Sources». Для токенів (Authentication Token) статичні плейлисти не створюється.
  • «Remove broken channels» – «TVLINK» автоматично буде видаляти усі канали, які виявилися непрацездатними. Будьте обережні з цією опцією, якщо зникне підключення до Інтернет, «TVLINK» почне видаляти кожен канал, який Ви будете вмикати.
  • «Authentication webUI» – проста автентифікація (логін/пароль) для веб-інтерфейсу. Після активації ви відразу побачите вікно для введення даних. Вам потрібно ввести – “admin/admin”. Після цього ви можете вказати свої логін/пароль у полях «Login (webUI)» та «Password (webUI)» відповідно. Якщо в полі «Login (webUI)» ввести порожній рядок або менше трьох символів, логін буде скинутий на значення за замовчуванням (admin). Це стосується і поля «Password (webUI)»: порожній рядок або менше трьох символів скинуть пароль на “admin”.

IP-адреси для списку «Playlist IP» беруться із системи. Якщо вам потрібно додати IP-адресу (або доменне ім’я) якої немає в системі (наприклад, якщо «TVLINK» працює за NAT), створіть файл «ip-address.ext» в каталозі «tvlink/data». Кожний рядок файлу повинен містити одну IP-адресу або доменне ім’я. Наприклад:

100.100.100.100
200.200.200.200
my.own.server.com

Маркер автентифікації для потоків та плейлистів.

Захист від несанкціонованого доступу до потоків та плейлистів.

  • «Authentication Token» – вмикає підтримку маркерів автентифікації.
  • «Main Token for playlist/streams» – будь-яка послідовність латинських літер та/або цифр, чутлива до регістру.

Якщо опцію «Authentication Token» активовано, після застосування налаштувань , доступ до потоків та плейлистів здійснюється лише через токен. На сторінці «Settings» задається токен для основного плейлиста.

Інші токени задаються в «Профілях користувачів».

Періодичне перезавантаження налаштувань.

Ця функція перезавантажує налаштування «TVLINK» через вказані проміжки часу. Ця дія аналогічна «Apply Settings» внизу сторінки. Вона не перезавантажує саму програму, а тільки заново ініціює всі налаштування. Але, це сприяє очищенню оперативної пам’яті та закриттю всіх сокетів. Тому може бути корисна, коли сервер працює 24/7.

  • «Reload by interval» – перезавантажувати модулі «TVLINK» через проміжок часу (у годиннику) вказаний у «Reload every hours».
  • «Reload once a day» – перезавантажувати один раз на добу, у визначений параметром «Reload at o’clock» час.

Час вказаний в цих опціях не точний. Наприклад, якщо вказано «Reload once a day» / «Reload at o’clock» – в 4 години, перезавантаження станеться між четвертою та п’ятою годинами.

«Reload once a day» має вищий пріоритет. Якщо Ви увімкнете обидва параметри, перезавантаження модулів працюватиме один раз на добу.

Перезавантаження відбуваються тільки якщо:

  • кількість відкритих сокетів (з’єднань) перевищує 10
  • програма використовує більше ніж 60 Мб оперативної пам’яті для систем де RAM менше за 1.5 Гб та більше 120 Мб для систем де RAM перевищує 1.5 Гб.

Щоб уникнути проблем із трансляцією потоків, функції спрацюють, якщо в цей момент «TVLINK» не веде мовлення (немає підключених клієнтів). Як тільки вимкнеться останній клієнт відбудеться перезавантаження модулів.

Якщо ввімкнена опція «Ignore connected clients on Reload», модулі «TVLINK» буде перезавантажено не зважаючи на те що є підключені кліенти.


«Empty channel link» – дозволяє вписати своє посилання на потік, який буде відтворюватися якщо жодне з посилань на канал не працює.

«Exclude these lines from channel names when mapping» – виключення слів з назв каналів. Ви можете виключити будь-які рядки з назви каналу для автоматичного зв’язування. Сама назва каналу при цьому залишається незмінною, проте «TVLINK» при автоматичному зв’язуванні відкидає вказану вами частину з назви. Розділювачем слів, які потрібно виключити з назви, є кома (без пробілів). Наприклад, при таких налаштуваннях

всі канали з такими іменами будуть вважатися одним і тим же каналом – «Discovery Science HD» .

  • «Discovery Science HD»
  • «Discovery Science HD orig»
  • «Discovery Science HD PREMIUM+»

Для інформації. Якщо в одному джерелі є канали, як показано вище, то найвищий пріоритет буде у потоку (посилання на потік) назва якого найдовша, тобто спочатку «Discovery Science HD PREMIUM+», потім «Discovery Science HD orig» і останній «Discovery Science HD».

«M3U playlist settings» – дозволяє додати потрібні вам елементи після тегів «EXTM3U» та «EXTINF» в плейлист «TVLINK». Наприклад, це може бути інформація для періодичного оновлення списку каналів: «refresh=”3600″». Якщо ваш IPTV програвач підтримує це.


Налаштування потоків.

«Main User-Agent» – задає User-Agent за умовчанням. У деяких IPTV-провайдерів може стояти блокування по «user-agent». Вони віддають потік, тільки якщо запит іде від визначеної програми.  Ви можете вказати «TVLINK», щоб він видавав себе за іншу програму.

Наступні налаштування здебільшого відносяться до модуля «Streamlink» і відповідають за роботу з потоками.

  • «Stream Ring buffer» – задає розмір буфера для потоків (в мегабайтах). Відповідає параметру «ringbuffer-size» в «Streamlink».
  • «Chunk size» – задає розмір фрагмента під час читання потоку (в байтах). Чим більший розмір фрагмента, то менше навантаження на процесор. Чим менший розмір фрагмента, тим швидше відкривається потік.
  • «Threads job timeout» – час (в секундах) через який буде припинено роботу ланцюжка по читанню/запису фрагментів потоку. Коли це спрацьовує «Streamlink» перестане транслювати потік, але може не закрити з’єднання. Тому рекомендується вибирати значення для цього параметра біле ніж максимальне значення в опціях «General HTTP timeout» та «HLS segment timeout», про які йдеться нижче. Частково відповідає параметру «stream-timeout» в «Streamlink».
  • «General HTTP timeout Connect/Data» – загальний тайм-аут (в секундах) , який використовується для всіх HTTP-запитів, крім тих, які охоплюються іншими параметрами. Для розуміння: в HLS-потоках це буде таймаут для отримання списку сигментів. Окремо встановлюється час (таймаут) для підключення та час на отримання даних, відповідно. Відповідає параметру «http-timeout» в «Streamlink», окрім того, що дає змогу встановити різні значення для з’єднання та читання даних.
  • «HLS segment timeout Connect/Data» – тайм-аут (в секундах) , який використовується для HLS-сегментів (а також DASH и тому подібне). Окремо встановлюється час (таймаут) для підключення та час на отримання даних, відповідно. Відповідає параметру «stream-segment-timeout» в «Streamlink», окрім того, що дає змогу встановити різні значення для з’єднання та читання даних.
  • «HLS segment queue threshold» – Коефіцієнт множення цільової тривалості списку відтворення HLS, після якого потік буде зупинено достроково, якщо після оновлення списку відтворення у чергу не буде поставлено нових сегментів. Відповідає параметру «hls-segment-queue-threshold» в «Streamlink».
  • «Stream retry count» – ця опція встановлює переметри «stream-segment-attempts» та «hls-playlist-reload-attempts» для «Streamlink». Тобто кількість спроб завантаження для сигментів та списку сигментів.
  • «Segment threads» – кількість паралельних завантажень сегментів. Це розмір пулу потоків, який використовується для завантаження сегментів. Відповідає параметру «stream-segment-threads» в «Streamlink».
  • «Segments Queue» – розмір черги сегментів. В «Streamlink» вона є сталою, 20 сегментів. Але це забагато для Live-потоків. Чим меньша чегра тим скоріш будуть закриватися потоки, а також буде меньше споживання оперативної пам’яті та кількості відкритих сокетів. Краще встановити «as threads», тобто відповідає кількості «Segment threads» але не меньше чим 6 сегментів.
  • «HLS live edge» – задає скільки HLS-сегментів потрібно завантажити при старті потоку. Відповідає параметру «hls-live-edge» в «Streamlink».
  • «HLS playlist reload time» – контролює час через який виконується запит для оновлення списку сегментів. Частково відповідає параметру «hls-playlist-reload-time» в «Streamlink». Параметр «segment» має таке ж значення як і в «Streamlink». Значення «duration» відповідає «default» в «Streamlink». Значення «average» це середній час двох сегментів. Значення «default» це або одне зі значень яким відповідають «duration» / «segment», або якщо їх не має встановлено час – 6 секунд.
  • «HLS Stream Data» – якщо активовано, негайно передає дані з сегмента в вихідний буфер під час завантаження. Канали відкриваються швидко, без попередньої буферизації перед стартом. Якщо вимкнено, дані передаються тільки після завантаження першого сигмента. Відповідає параметру «hls-segment-stream-data» в «Streamlink».
  • «HLS Live Restart» – якщо активно, перейти до початку прямої трансляції або якнайдалі назад. Відповідає параметру «hls-live-restart» в «Streamlink».
  • «Debug Streams» – додає журнал роботи модуля «Streamlink» в журнал роботи «TVLINK». Файл журналу роботи знаходиться в каталозі «tvlink/log».

«Sources Proxy» та «Streams Proxy» – дозволяють встановити проксі для джерел та потоків. Формат: «http://login:password@your.proxy:port». Значення «login/password» не обов’язкові. Підтримуються протоколи: http, https, socks5.

Для більшості налаштувань на цій сторінці, щоб зміни набули чинності, потрібно перечитати конфігурацію «TVLINK». Для цього є опція «Apply Settings» внизу сторінки. Опції «Refresh sources at playlist» та «Remove broken channels» цього не потребують.


Такі налаштування потоків як:

  • Threads job timeout
  • General HTTP timeout
  • HLS segment timeout
  • HLS segment queue threshold
  • Stream retry count
  • HLS live edge
  • HLS Stream Data
  • HLS Live Restart

Ви можете встановити окремо для кожного джерела на сторінці «Sources» (іконка біля назви джерела). При цьому не потрібно тиснути на «Apply Settings», зміни набувають чинності одразу.

Ці самі параметри не потребують перезавантаження і на сторінці «Settings».

Кнопка «Default» в формі «Streamer settings» повертає всі окремі налаштування потоків для джерела до основних налаштувань на сторінці «Settings».

Поля:

  • Playlist URL – дає можливість змінити URL-адресу джерела
  • User-Agent – дає можливість встановити опцію “User-Agent” для кожного джерела (потоків в цьому джерелі) окремо. Підміняє собою опцію «Main User-Agent»

Зміни в налаштуваннях цих полів відбуваються одразу як поле втрачає фокус.


Опис деяких, не дуже зрозумілих, параметрів «TVLINK».

Спочатку визначимо, чим відрізняються тайм-аути з’єднань і читання даних (Connect timeout та Read Data timeout).

  • «Connect timeout»

Коли клієнт (у цьому випадку TVLINK буде клієнтом по відношенню до серверу звідки він запитує потоки) ініціалізує з’єднання, він повинен отримати відповідь від сервера (спеціальний код відповіді). Не важливо, яка саме відповідь прийде від сервера. Це може бути відповідь 200 (підключення встановлено) або 302 (переадресація) або будь-яка інша, головне, щоб сервер відповів. Якщо в проміжок часу зазначеного в тайм-аут з’єднання (час очікування підключення) відповідь від сервера не надійшла, клієнт скидає з’єднання.

  • «Read Data timeout»

Коли клієнт отримує відповідь 200 (підключення встановлено) від сервера, він починає завантажувати (читати) дані, які віддає сервер. Якщо за проміжок часу вказаного в тайм-аут читання даних (час очікування читання даних) сервер не передає інформацію, клієнт скидає з’єднання.

Тепер визначимся з форматами потоків.

Найбільше розповсюджені з них це: 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» тайм-аутів.


FFmpeg transcode stream.

Якщо у вашій системі встановлено «FFmpeg», ви маєте можливість увімкнути модуль «FFmpeg transcode stream».

Опції – це параметри командного рядка 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” (пропускати потік без перекодування).

Перед тим, як встановлювати значення, переконайтеся, що «FFmpeg» в системі підтримує ті чи інші параметри. Наприклад, дайте команду

ffmpeg -hide_banner -encoders

щоб подивитися доступні аудіо/відео енкодери.

Якщо процесор у вашій системі (наприклад, 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

Після застосування налаштувань (Apply Settings) на сторінці «About» з’явиться посилання на «M3U FFmpeg Playlist» (формат: http://ip-address:port/ffmpeglist).

Увімкнення «FFmpeg transcode stream» не впливає на основний модуль трансляції. Вони працюють паралельно. Ви можете одночасно підключити одних клієнтів до звичайного плейлиста (playlist), а інших до плейлиста «FFmpeg» (ffmpeglist).

За посиланням «http://ip-address:port/ffmpeglist» ви завжди можете отримати плейлист, навіть якщо «FFmpeg transcode stream» вимкнено і в системі немає «FFmpeg». Тому будьте уважні.

Якщо увімкнути «Debug Streams» та запустити «TVLINK» з командного рядка, при зупинці потоку буде виведено інформацію «FFmpeg» (кодування, помилки тощо).

Оновлення EPG.

Ці налаштування відповідають за періодичне оновлення «EPG».

  • «Auto update EPG» – увімкнути/вимкнути періодичне оновлення EPG.
  • «Update period EPG» – вибрати зі списку період оновлення в годинах, або один раз на добу (вночі).