Сервер трансляції «DVB-T2 to IPTV» на системі «LibreELEC (ae-fork)»

Задачі які ми ставимо.

Ми будемо приймати «DVB-T2» сигнал на USB-тюнер який підключено до комп’ютера з системою «LibreELEC (ae-fork)» за допомогою програми «MuMuDVB». Цю програму (MuMuDVB) ми налаштуємо так щоб вона видавала потоки в HLS-форматі.

Ми налаштуємо простий HTTP-сервер (httpd), для того щоб у нас була можливість отримувати HLS-потоки каналів за допомогою «TVLINK», або будь-якого іншого IPTV-програвача.

Нарешті, ми добавимо ці потоки в «TVLINK» і зробимо деякі налаштування для них.

Чому саме ми хочемо отримати потоки в HLS-форматі:

  • канали будуть перемикатися дуже швидко
  • це набагато надійніше, з точки зору передачі даних, чим в TS-форматі. А отже ми маємо стабільні трансляції

Вибір обладнання.

При написанні цієї інструкції використовувався USB-тюнер «Astrometa DVB-T2». Напевно, це самий дешевий пристрій на ринку (коштує біля 16$) і дуже добре підходить для цієї задачі.

Як Ви розумієте, для того щоб транслювати одразу всі доступні Т2-канали, вам знадобиться стільки тюнерів, скільки частот транслюються в вашій місцевості. Наприклад, в Києві транслюються чотири Т2-частоти (514, 538, 554 та 698 МГц), а отже щоб прийняти одразу всі частоти знадобиться 4 окремих USB-тюнери. Звісно, ви можете транслювати тільки одну частоту (це приблизно 8 каналів), якщо у вас тільки один тюнер. Також зверніть увагу, чи є в вашому комп’ютері достатня кількість USB-портів. Якщо ні, то можна використати активний (із зовнішнім живленням) USB-хаб.

Зауважте: якщо ви збираєтесь підключити декілька тюнерів, подбайте про те, щоб це були тюнери однієї і тієї ж самої моделі. Якщо це будуть різні тюнери (наприклад: «Astrometa DVB-T2» і «GENIATECH MyGica Т2»), ви можете зіткнутися з проблемою. А саме: при перезавантаженні система може міняти номери адаптерів. І якщо таке стається, то файл конфігурації який ви зробили для «Astrometa» починає використовується для тюнера «MyGica», тоді і виникають проблеми.  В цьому випадку прийдеться робити «прив’язку» тюнерів до імен за допомогою «udev symlink», або вирішувати проблему в інший спосіб.

Налаштування «MuMuDVB».

Спершу давайте подивимося, чи правильно визначила система наш DVB-адаптер/адаптери і завантажила потрібні драйвери.

За допомогою «PuTTY» під’єднуємося до терміналу системи. Нагадаю:

  • login – «root»
  • password – «mcpc».

Вводимо команду «mc» (це файловий менеджер Midnight Commander) і дивимося каталог «/dev/dvb». Якщо в системі не має такого каталогу, це зазвичай означає що в системі відсутні потрібні драйвери. В моєму випадку (підключений тільки один тюнер Astrometa) це виглядає так.

Як бачите, тюнер «Astrometa DVB-T2» має два фронтєнда (frontend0 і frontend1), а отже адаптер визначився системою вірно. За приймання Т2 сигналу відповідає «frontend1», ця інформація нам знадобиться пізніше.

Тепер налаштуємо конфігураційний файл для запуску «MuMuDVB».

Під’єднаємося до системи з допомогою «WinSCP», так простіше редагувати файли. В каталозі «/storage/.config/mumudvb» уже є всі потрібні файли і приклади. Відкрийте і налаштуйте під себе файл «Kyiv-t2.conf» (потім ви можете змінити його назву). Подивимося параметри які задіяні в цьому файлі. Детальний опис всіх параметрів для «MuMuDVB» ви можете побачити тут.

  • unicast – активуємо одноадресну передачу HTTP
  • port_http – порт прослуховування для unicast а також порт Web-інтерфейса
  • card – номер адаптера
  • tuner – номер фронтєнда
  • delivery_system – система доставки може бути: DVBT, DVBT2, DVBS, DVBS2 і тд.
  • freq – частота транспондера
  • multicast_ipv4 – вимикаємо групову передачу IPv4, вона нам не потрібна
  • autoconfiguration – дозволяє визначити всі канали та їх параметри автоматично
  • autoconf_scrambled – вважаємо закодовані канали дійсними під час автоконфігурації
  • hls – вмикаємо HLS формат
  • hls_rotate_count – кількість фрагментів HLS у плейлисті
  • hls_rotate_time – тривалість фрагментів HLS у секундах hls_storage_dir – каталог в якому будуть зберігатися фрагменти HLS і плейлисти

Розглянемо параметри які обов’язково потрібно змінити для інших файлів конфігурації, якщо ви використовуйте декілька тюнерів.

  • port_http – якщо в першому файлі у вас стояло значення «4242», в наступній конфігурації зробіть «4243» і так далі. Не обов’язково встановлювати саме такі значення, але порти в різних конфігураціях повинні бути різні.
  • card – значення (adapter) в жодній конфігурації не повинні повторюватись якщо ми маємо справу з USB-адаптерами про які згадується у цій інструкції.
  • tuner – номер тюнера (frontend) для «Astrometa DVB-T2» потрібно вказати «1» якщо ви хочете приймати DVB-T2 сигнал. Фронтєнд «0» це для DVB-T.
  • freq – частоти повинні бути різні. Навіщо приймати ті самі канали на декілька адаптерів.
  • autoconf_scrambled – тут ми нічого не міняємо (скрізь стоїть 1), просто хочу пояснити. Якщо вимкнути цей параметр то «MuMuDVB» може не знайти канали. Хоча самі канали не закодовані, можливо програма бачить якийсь параметр в потоці що вказує на кодування.
  • hls_playlist_name – назва основного плейлиста (плейлист зі списком каналів). Цього параметра немає в прикладі, але це важливий параметр якщо у вас декілька адаптерів.

В кожній конфігурації вам потрібно вказати різні назви (в hls_playlist_name), тому що всі HLS-файли у нас будуть в одному каталозі. Наприклад ми можемо зробити назви в різних конфігураціях по частотах:

  • hls_playlist_name=514. m3u8
  • hls_playlist_name=538. m3u8

і так далі.

Тепер давайте перевіримо як працює «MuMuDVB» с вашою конфігурацією.

Будемо вважати, що у вас підключена і налаштована антена.

Введіть в терміналі команду:

mumudvb -d -c /storage/.config/mumudvb/Kyiv-t2.conf

Опис параметрів «MuMuDVB» ви можете подивитись тут.

Ви можете зайти у веб-інтерфейс «http://your-ip:your-port» (наприклад: «http://192.168.1.72:4242») і перевірити як все працює.

В каталозі «/tmp/mumudvb» або в іншому, який ви вказали в «hls_storage_dir», ви повинні побачити HLS-файли.

Ви можете перевірити як працюють канали будь яким IPTV плеєром (наприклад VLC), але поки що це будуть TS-потоки. Щоб отримати HLS-трансляції нам потрібно налаштувати HTTP-сервер.

Тепер налаштуємо сервіс/сервіси для автоматичного запуску «MuMuDVB».

Скопіюйте файл «/storage/.config/mumudvb/mumudvb.service» в каталог «/storage/.config/system.d».

Якщо у вас декілька адаптерів, зробіть це для кожного із них, звісно з різними іменами. Наприклад:

  • mumudvb1.service
  • mumudvb2.service

і тд.

Відредактуйте в цих файлах рядок:

ExecStart=/storage/.config/mumudvb/mumudvb.run 0 1 "Kyiv-t2.conf"

А саме, три останні параметри. Де:

  • 0 – номер адаптера
  • 1 – номер фронтєнда
  • Kyiv-t2.conf – назва файлу конфігурації

Після цього можна запустити і активувати сервіс/сервіси:

systemctl start mumudvb1
systemctl start mumudvb2
systemctl enable mumudvb1
systemctl enable mumudvb2

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

Як згадувалось раніше, для того щоб мати можливість дивитись HLS-трансляції, нам потрібен HTTP-сервер. Ми будемо використовувати простий «httpd».

Файл «/storage/.config/mumudvb/httpd.conf» це конфігурація нашого HTTP-сервера. Там є довідка і він уже налаштований. Якщо ви змінили каталог в параметрі «hls_storage_dir» тоді відредактуйте рядок (замініть на ваш каталог):

H:/tmp/mumudvb

Скопіюйте файл «/storage/.config/mumudvb/httpd.service» в каталог «/storage/.config/system.d». Запустіть і активуйте сервіс:

systemctl start httpd
systemctl enable httpd

Тепер, в залежності від того яку назву мають ваші плейлисти (параметр «hls_playlist_name») ви можете отримати трансляції в HLS-форматі. У моїй конфігурації використовується назва за замовчуванням, отже плейлист буде за адресою «http://192.168.1.72/playlist.m3u8».

Нам знадобиться «TVLINK» не нижче версії 4.0.2, який може обробляти HLS-плейлисти від «MuMuDVB».

Додаєм плейлист (або плейлисти) і канали.

В налаштуваннях потоків для цього джерела ввімкніть параметри «HLS Stream Data» і «HLS Live Restart».

Перший гарантує швидке перемикання каналів. Другий вмикати не обов’язково, але в нашому випадку «TVLINK» дуже швидко скачає всі сегменти і буде часто перевіряти наявність нових. А це трохи сповільнить його.