Как стать автором
Обновить
731.47
Рейтинг
Timeweb Cloud
Облачная платформа для разработчиков и бизнеса

Настраиваем просмотр IPTV в Plex Media Server

Блог компании Timeweb Cloud Настройка Linux *Open source *Работа с видео *Видеотехника
Tutorial

Телевизор в 2022 году это совершенно другая сущность, если сравнивать и смотреть со стороны даже 2010-х годов. Сейчас мало кто использует телевизор в обычном его понимании - приложения Smart TV, всевозможные сервисы, подписки или домашние медиацентры с сетевыми хранилищами. Телевизор сейчас - это всего лишь экран для отображения картинки. А телевидение так и вообще ушло на второй план или вовсе не интересно пользователю.

А если все же идти в ногу со временем и иметь домашний медиацентр на базе Plex Media Server, но в тоже время не прочь пролистать ТВ-каналы, как в старые добрые времена?

Задача легко решаема, если в вашем обиходе есть DVR-тюнер или провайдер, поддерживаемый Plex. И второй вариант - более современный, без проводов и, собирающих пыль, ресиверов - IPTV с недорогим плейлистом и хорошим телегидом. Именно на этом варианте мы и остановимся. Приступаем!

Содержание

  1. Исходные данные и немного теории

  2. Установка Plex Media Server

  3. Подготовка плейлиста IPTV

  4. Установка и настройка HLS Proxy

  5. Установка и настройка xTeVe

  6. Подключение xTeVe в Plex Media Server

1. Исходные данные и немного теории

Мой кейс основан на операционной системе Kubuntu 20.04 и Plex Media Server версии 1.25.3.5385, m3u-плейлисте с IPTV-каналами от сервиса zedom.net за $1/месяц и EPG/Picons от epg.it999.ru. Поэтому все манипуляции по установке и настройке будут ориентированы именно на Linux, а также конкретного провайдера IPTV. Но данное решение кроссплатформенное и его можно без проблем реализовать на других платформах (FreeBSD, OS X, Windows).

Так как в Plex Media Server нет возможности прямым способом подключить m3u-плейлист, ведь он ожидает подключения физического тюнера или антенны, нам придется немного изловчиться - будем вещать для Plex через программный ресивер xTeVe. Важно учесть, что Plex не может принимать поток в формате HLS.

HLS (m3u8) - расшифровывается как HTTP Live Streaming. В этой структуре сервер вещания делит поток на отдельные отрезки mp4 по 10 секунд. Это очень удобно, когда провайдеру требуется потоковое вещание в нескольких вариантах качества, чтобы зритель мог использовать подходящий битрейт видео с учетом пропускной способности сети. HLS был изобретен и использовался Apple на своих устройствах. Единственным недостатком является то, что HLS имеет задержку от 10 до 30 секунд.

MPEG-TS (ts) - состоит из двух частей: MPEG и TS. MPEG - потоковое видео, TS- транспортный поток. Этот формат может предоставлять аудио, видео и метаданные, такие как субтитры и EPG. MPEG имеет функцию исправления ошибок, чтобы сохранить целостность видео при низком уровне сигнала.

Именно в HLS-формате вещают практически все современные IPTV-провайдеры, без возможности смены этого формата. Мой провайдер не исключение. Поэтому, необходимо будет на входе преобразовывать HLS-эфир и отдавать в Plex уже в нужном формате MPEG-TS. Для этого этапа будем использовать HLS Proxy.

Воспринимается сложно и громоздко, но на практике все предельно просто и не сложно реализуется. С теорией разобрались - приступаем к работе.

2. Установка Plex Media Server

Если сервер Plex у вас уже развернут - пропускаем этот шаг. Для новой установки необходимо добавить ключ от репозитория downloads.plex.tv и сам репозиторий:

echo deb https://downloads.plex.tv/repo/deb public main | sudo tee /etc/apt/sources.list.d/plexmediaserver.list
wget -O - https://downloads.plex.tv/plex-keys/PlexSign.key | sudo apt-key add -
sudo apt-get update && sudo apt -y install plexmediaserver

По завершении установки убедимся, что сервер корректно установлен и запущен.

systemctl status plexmediaserver
Сервис plexmediaserver запущен
Сервис plexmediaserver запущен

3. Подготовка плейлиста IPTV

С регистрацией и оплатой на сервисе ZeDom, думаю, проблем возникнуть не должно. Описывать подробно это не буду. Первые сутки, кстати, можно попробовать бесплатно.

В личном кабинете в разделе «Плейлист» рекомендую выбрать только нужные вам группы каналов (много зарубежных, не «русскоговорящих»). Помимо выбора групп, также рекомендую пройтись и по самим каналам, отключив не нужные. Сделать это можно в разделе «Конструктор». Так, например, изначально мой плейлист составлял 1800+ каналов. После выключения лишних осталось 480 каналов.

480 каналов - это не случайное число. Именно такое ограничение по количеству каналов в xTeVe. Это обязательно нужно учесть, иначе не сможете добавить ни один канал.

Плейлист можно использовать как локальным m3u-файлом, так и ссылкой - значения не имеет. Я буду использовать файл с плейлистом, ввиду периодических блокировок провайдером.

4. Установка и настройка HLS Proxy

Загружаем с сайта архив с последней стабильной версией для платформы linux x64. На момент написания публикации актуальная версия - 8.0.7.

wget -P /tmp https://www.hls-proxy.com/downloads/8.0.7/hls-proxy-8.0.7.linux-x64.zip

Разместим HLS Proxy в директорию /opt/hls-proxy, предварительно создав этот каталог и назначив права.

sudo mkdir /opt/hls-proxy
sudo chmod -R 0777 /opt/hls-proxy
unzip /tmp/hls-proxy-8.0.7.linux-x64.zip -d /opt/hls-proxy

Делаем исполняемыми два файла - hls-proxy и install.sh

chmod +x /opt/hls-proxy/hls-proxy install.sh

Устанавливаем HTTP-порт 8080 (либо любой другой, если 8080 уже занят) для HLS Proxy. Либо вообще можно не настраивать порт, по умолчанию используется 80.

/opt/hls-proxy/hls-proxy -port 8080 -save -quit

И устанавливаем сам HLS Proxy с помощью скрипта. Он все сделает автоматически, в том числе добавит юнит в подсистему systemd для автозапуска

/opt/hls-proxy/install.sh

По завершении установки проверяем, запущен ли сервис hls-proxy

sudo systemctl status hls-proxy
Сервис успешно запущен
Сервис успешно запущен

Теперь можно перейти к веб интерфейсу HLS Proxy

http://ip_адрес_сервера:порт

Если порт оставили по умолчанию, то просто переходим по IP-адресу или localhost в браузере. Если все успешно, то вы должны увидеть вот такой незамысловатый интерфейс

Стартовая страница HLS Proxy
Стартовая страница HLS Proxy

Переходим к настройке сервера ("Открыть конфиг") и в разделе "Плейлисты" указываем путь к плейлисту от zedom.net. Так как я буду использовать локальный файл, указываю тип -"file" и место расположение файла /opt/hls-proxy/zedom.m3u.

Добавление плейлиста в HLS Proxy
Добавление плейлиста в HLS Proxy

В разделе "Телегид" указываем путь к EPG. Я лично использую программу с качественными логотипами каналов от it999.ru.

http://epg.it999.ru/epg2.xml.gz

Добавление EPG в HLS Proxy
Добавление EPG в HLS Proxy

Остальные настройки можно оставить по умолчанию. Сохраняем и переходим на главную страницу. Кликаем "Перезагрузить плейлист" и "Обновить телегид".

Обработка EPG
Обработка EPG

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

Загруженные и доступные каналы в HLS Proxy
Загруженные и доступные каналы в HLS Proxy

На этом подготовка HLS Proxy завершена, для дальнейшей работы с ним нам понадобится две ссылки на него:

  • http://адрес_сервера:порт/?output=ts - это наш IPTV-плейлиcт уже в нужном формате

  • http://адрес_сервера:порт/epg - телегид

5. Установка и настройка xTeVe

Следующим шагом необходимо установить xTeVe и получить в нем весь наш плейлист из HLS Proxy. Для этого загружаем со страницы проекта в GitHub архив, распаковываем и размещаем в каталоге /opt/ и делаем исполняемым бинарный файл xteve.

wget -P /tmp https://github.com/xteve-project/xTeVe-Downloads/blob/master/xteve_linux_amd64.zip
unzip /tmp/xteve_linux_amd64.zip -d /opt/
sudo chmod +x /opt/xteve

Запустить xTeVe можно вручную выполнив /opt/xteve, а для запуска xTeVe при старте системы создаем юнит в подсистеме systemd

sudo mcedit /etc/systemd/system/xteve.service

Вставляем содержимое

[Unit]
Description=xTeVe Service
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
ExecStart=/opt/xteve
ExecReload=/usr/bin/killall xteve
ExecStop=/usr/bin/killall xteve
KillMode=process
Restart=always
RestartSec=15

[Install]
WantedBy=multi-user.target

Перечитываем изменения, добавляем символическую ссылку в автозапуск и запускаем сервис

sudo systemctl daemon-reload
sudo systemctl enable xteve
sudo systemctl start xteve

Убедимся, что юнит создан правильно и сервис запущен

sudo systemctl status xteve
Сервис xteve запущен и работает
Сервис xteve запущен и работает

Веб-интерфейс xTeVe будет доступен по адресу

http://ip_адрес_сервера:34400/web/

Приступаем к настройке. Количество тюнеров можно выставить максимальное, это позволит просматривать трансляции параллельно, на нескольких устройствах одновременно. Но не стоит забывать об ограничениях IPTV-провайдера. Например, zedom допускает одновременный просмотр только на двух устройствах.

Тип источника EPG - XEPG.

Указываем адрес к плейлисту в формате MPEG-TS на нашем сервере HLS Proxy, обязательно используя параметр ?output=ts.

Указываем путь к EPG на сервере HLS Proxy.

Если вы прежде все делали правильно, то xTeVe должен обработать плейлист и EPG. В сводке сверху страницы будут указаны доступные каналы и пути для подключения клиентами.

Также в разделе "Mapping" можно увидеть все подключенные каналы с их логотипами.

Все подготовительные работы выполнены, в конечном результате мы получили IPTV-плейлист в MPEG-TS формате, доступный по пути:

  • http://ip_адрес_сервера:34400 - IP-адрес нашего программного DVR-ресивера

  • http://ip_адрес_сервера:34400/xmltv/xteve.xml - телегид

6. Подключение xTeVe в Plex Media Server

Переходим в настройки аккаунта и раздел "Прямой эфир и записи" и добавляем наш ресивер.

Plex без проблем обнаруживает наш тюнер и все доступные каналы. Страну не выбираем, а нажимаем на гиперссылку "Использовать телегид для XMLTV" и указываем адрес к EPG на xTeVe (http://ip_адрес_сервера:34400/xmltv/xteve.xml).

Ожидаем, пока Plex обработает весь список каналов и загрузит EPG. Первое выполнение займет достаточно много времени.

В HLS Proxy можно наблюдать сводную информацию о текущем потоке во время просмотра, а также детальное логирование процесса.

Мобильный клиент Plex на iOS также прекрасно справляется с просмотром IPTV, без торможений и фризов, с детальным телегидом и "ровными" логотипами каналов.

Заключение

Все готово, теперь можно наслаждаться просмотром ТВ с домашним сервером Plex, без громоздких и пыльных ресиверов, проводов и практически даром! Да, реализация немного усложнена, ввиду определенных особенностей, как самого Plex, так и формата вещания IPTV-сервиса.

Помимо трудностей в реализации, такая схема вещания влечет за собой еще и потребность в больших ресурсах сервера. Самым "прожорливым" до оперативной памяти в этой цепочке является xTeVe - использует порядка 850 Мб, что для домашнего медиацентра может оказаться критичным. HLS Proxy менее требовательный и даже во время просмотра канала использует около 180 Мб. Если же сравнивать Plex, например, с Kodi, то он с PVR IPTV Simple Client просмотр IPTV решает гораздо проще и менее ресурсоемко.

Еще одним недостатком просмотра IPTV в Plex из m3u является повышенная задержка при переключении каналов. В среднем, переключение занимает порядка 5 секунд, оно и понятно, ведь путь и преобразования, которые проходит эфир от входа до стрима на конечном устройстве не малый. Не влияет на задержку и качество самого эфира - нет разницы при переключении FHD или HD-каналов. Также на уровне погрешности разница в задержке при переключении каналов на локальном хосте или же при стриминге на конечное устройство по Wi-Fi - то есть, канал связи практически не влияет скорость переключения. Виновница задержки, определенно, "гирлянда" из посредников в лице HLS Proxy и xTeVe.

Теги:
Хабы:
Всего голосов 28: ↑25 и ↓3 +22
Просмотры 30K
Комментарии Комментарии 64

Информация

Дата основания
Местоположение
Россия
Сайт
cloud.timeweb.com
Численность
201–500 человек
Дата регистрации