Настройка IPTV в Tvheadend (HTTP/UDP)
Начиная с версии «AlexELECv5-20150303-r0021» добавлена возможность смотреть IPTV-потоки по протоколу «http» (unicast) в «Tvheadend». С «udp» (multicast) – не было проблем и раньше. В этом обзоре будут рассмотрены оба протокола (http/udp).
Начнем.
Включаем «Tvheadend» и перезагружаем систему.
Заходим в веб-интерфейс «Tvheadend» (http://ip-address:9981) и переходим на вкладку «Networks».
Добавляем «Сеть» — тип «IPTV». И заполняем параметры.
- Из обязательных параметров здесь только «Network Name» (Имя Сети). Оно может быть любое.
- Параметр «Network Discovery» (обнаружение сетевых ресурсов) полезен для спутникового ТВ (автоматический поиск транспондеров). Для IPTV-потоков не имеет смысла.
- «Character Set» (Выбор кодировки) – я установил «UTF-8» для нормального отображения названий каналов в кириллице.
Нажимаем «Create» (Создать) и переходим на вкладку «Muxes» (Мультиплексоры).
Здесь нажимаем «Add» (Добавить), выбираем созданную нами сеть и заполняем параметры.
Чтобы было понятнее, я привожу пример плейлиста (файл *.m3u) с которого добавляются каналы.
#EXTM3U
#EXTINF:0 tvg-name="2×2",2×2
udp://@238.1.18.2:1234
Обязательные параметры:
- «URL» — собственно адрес потока. Тот же что и в файле, но без символа «@» (udp://238.1.18.2:1234).
- «Interface» — имя сетевого интерфейса. Обычно «eth0» если у Вас проводное подключение или «wlan0» если беспроводное. Посмотреть можно на вкладке «Настройки ОС -> Сеть».
Второстепенные параметры (я не указывал):
- «Mux Name» — имя транспондера
- «Service Name» — имя канала
Мой провайдер вещает IPTV напрямую, не перекодируя сигнал, с сохранением всех параметров потока (так, как поток/канал идет со спутника). Поэтому мне не нужно вбивать названия каналов.
Как видите «Tvheadend» обнаружил еще 17-ть каналов, но работать они не будут. Программа обрабатывает «Mux» (транспондер) как спутниковый, но при этом правильные URL сама конечно не пропишет. Поэтому, просто удаляем их.
Осталось только «промапить» каналы и можно смотреть ТВ.
Теперь займемся HTTP-потоками (unicast).
Если Ваше интернет подключение не так называемая «Домашняя сеть», UDP-потоки Вам не доступны. Разве, что Вы сами организуете вещание в своей квартире. Поэтому – http.
Я создал еще одну сеть – «IPTV-HTTP», для наглядности. Хотя можно было обойтись и первой.
Переходим на вкладку «Muxes» и добавляем потоки. Здесь придется каждый канал добавлять отдельно. Сколько каналов – столько транспондеров.
Пример плейлиста:
#EXTM3U
#EXTINF:-1,Кинорейс 1
#EXTGRP:кино
http://iptv5.zargacum.net/iptv/key/101/index.m3u8
Единственный нужный здесь параметр – это «URL». Разберем эту строку подробнее.
pipe://ffmpeg -loglevel fatal -re -i http://iptv5.zargacum.net/iptv/key/101/index.m3u8 -vcodec copy -acodec copy -metadata service_provider=IPTV -metadata service_name=Кинорейс1 -tune zerolatency -f mpegts pipe:1
В общем, кроме того, что выделено жирным – Вы можете просто скопировать.
«pipe://» — указывает Tvheaden какой протокол будет использоваться. Все, что дальше — это запуск утилиты «ffmpeg» (/usr/bin/ffmpeg) с параметрами.
Выделенные части строки (параметрами ffmpeg):
- Адрес потока IPTV (URL) — http://iptv5.zargacum.net/iptv/key/101/index.m3u8
- «service_provider» — поставщик услуг, любое значение.
- «service_name» — имя канала, любое значение.
Все остальные аргументы Вы можете узнать из справки по «FFmpeg». Некоторые замечания по опциям есть в вики Tvheadend.
Если коротко, о том, что означает эта строка: мы с помощью FFmpeg приводим поток в формат «mpegts» и засовываем его (поток) в трубу (pipe) откуда Tvheadend благополучно его берет.
К моему великому удивлению 🙂 – работает это очень хорошо.
Запускаем «Map Selected», так как добавился новый канал и проверяем, что получилось.