Строим полноценный IPTV/OTT сервис: Stalker Middleware
Статья будет полезна небольшим операторам и даже пользователям. Можно «поднять» у себя дома Stalker и использовать его для просмотра бесплатных IPTV и интернет каналов на приставке. Самому организовать EPG и запись телеканалов.
▍Что такое Middleware?
В Википедии есть хорошее и краткое определение:
Middleware — промежуточное программное обеспечение для управления комплексом IPTV. Это основной компонент IPTV решения, так как он, в конечном итоге, и определяет набор услуг, доступный абоненту, пользовательский интерфейс, логику переходов и алгоритм управления. На Middleware возлагается роль координатора в процессе взаимодействия практически всех компонентов комплекса.
Я полностью согласен с этим определением. Построить IPTV/OTT сервис без Middleware невозможно. Разработчиков на рынке много, у каждой Middleware свои особенности: список поддерживаемых устройств, список поддерживаемых CAS-систем, пользовательский интерфейс, список поддерживаемых видеосерверов, разные API для биллинга, стоимость и поддержка.
Выбрав одно решение, оператор привязывается к Middleware и не может быстро и дешево поменять решение, потому что это потребует смены программного обеспечения на ТВ-приставках (или их замена, если список поддерживаемых устройств не совпадает). Так же потребуется заново провести интеграцию с биллингом, системой закрытия контентов. Это время и деньги, и чем больше абонентская база, тем сложнее.
У нас на сайте есть хорошая статья про Middleware.
▍Почему Stalker?
В первую очередь Stalker интересен тем, что он бесплатный. Правда бесплатный, без пробных периодов и ограничения функционала. Исходный код можно скачать на GitHub.
Это очень важное преимущества Stalker перед решениями других производителей. Я работаю много лет в сфере IPTV и не знаю других бесплатных решений. Я спрашивал у коллег и даже разработчиков Инфомира, они тоже не знаю. Напишите в комментариях, если знаете другие бесплатные решения.
Не каждый оператор готов вкладывать деньги в покупку Middleware, потому что сразу не понятно зачем она вообще нужна. Вот спутниковые приемники принимают телеканалы, CAS-система защищает контент, приставки показывают видео, биллинг деньги считает. А что делает Middleware? Список каналов показывает и погоду показывает?
Конечно же нет, но этого уже достаточно чтобы заинтересоваться бесплатным решением и установить Stalker на тестовый сервер чтобы познакомится поближе.
▍Установка
У Инфомира есть небольшая документация и образ VirtualBox
Чтобы установить Stalker придется установить более 200 пакетов в вашу ОС. Рекомендую выделить отдельную виртуальную машину или установить в docker-контейнер, иначе могут возникнут конфликты с другими веб-сервисами. |
Образ VirtualBox
Запуск образа VirtualBox дело не сложное, но опишу кратко как это делается:
- Установить VirtualBox. Сайт: www.virtualbox.org
- Скачать и распаковать zip-архив с образом. Актуальная ссылка на странице: http://wiki.infomir.eu/doku.php/stalker: start
- Запускаем VirtualBox, меню «Машина», нажимаем «Добавить» (Ctrl+A) и выбираем файл VmVirtualBox_Ubuntu14.04.4.x64_MW.Stalker.Demo
- Запускаем виртуальную машину, авторизуемся (test/test), смотрим IP-адрес машины и открываем в браузере административный интерфейс.
- В админ интерфейсе «Хранилища» изменить IP-адрес хранилища на IP интерфейса виртуальной машины
▍Docker контейнер
Давайте установим Stalker в Docker контейнер. Это быстро и удобно. Если вы не знаете что такое Docker и никогда с ним не работали, почитайте статью habrahabr.ru/post/310460. Она даст полное представление о работе контейнеров. Но сейчас эти знания не понадобятся.
Разработчики настоятельно рекомендуют использовать Ubuntu Server LTS, при этом 16.04 не поддерживают пока, а 12.04 уже мало кем используется. Docker позволит запустить Stalker на вашем любимом дистрибутиве.
Для продолжения, нам потребуется сам Docker и Docker-compose. Пример установки для большинства дистрибутивов:
curl -sSL https://get.docker.com/ | sh
curl -L https://github.com/docker/compose/releases/download/1.8.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose
Создадим рабочую папку, в которой будет у нас жить Stalker и скачаем docker-compose файл:
mkdir /opt/stalker && wget -O /opt/stalker/docker-compose.yml https://gist.githubusercontent.com/klyushkov/3cc71f3fe3ea27a44c4a6985a1504d4a/raw/c38c746369e4b5238db23ef83ccf5592dc53a63a/stalker-docker-compose.yml
Запускаем Stalker:
cd /opt/stalker && docker-compose up -d
Запускаем утилиту, которая скачает последнюю версию Stalker и заполнит нам базу данных:
docker exec -it stalker_portal_1 /opt/deploy.sh
Ждем, пока скрипт выполнится. У меня это занимает около 4-х минут (что ж там за это время происходит?). Готово, админ панель Сталкера доступна по адресу:
http://ip/stalker_portal/
Заходим по стандартному логину/паролю: admin/1.
Еще раз все вместе, чтобы показать как все просто, буквально 3 команды:
mkdir /opt/stalker && wget -O /opt/stalker/docker-compose.yml https://gist.githubusercontent.com/klyushkov/3cc71f3fe3ea27a44c4a6985a1504d4a/raw/c38c746369e4b5238db23ef83ccf5592dc53a63a/stalker-docker-compose.yml
cd /opt/stalker && docker-compose up -d
docker exec -it stalker_portal_1 /opt/deploy.sh
Ролик «Установка Stalker Middleware за 2 минуты»:
▍Установка без виртуализации и контейнеров
Можно установить и по старинке, просто установить необходимые пакеты и отредактировать несколько файлов вручную. Этот способ самый долгий и трудоемкий, но отлично подойдет, если вы собираетесь запустить сервер в Production.
Если у вас уже есть сервер с nginx+apache2+php5, то вам повезло, возможно Stalker запустится и без установки дополнительных пакетов. Но, насколько я знаю, nginx+apache2 уже редко используются вместе, nginx+php-fpm куда удобнее.
Инструкция от разработчика: wiki.infomir.eu/doku.php/stalker: install_and_configure
▍Настройка
После установки, первым делом хочется открыть портал на ТВ-приставке, чтобы убедится, что установка прошла успешно и оценить интерфейс со стороны пользователя. Но пока рано, там будет совсем скучно, давайте пока добавим немного контента.
По умолчанию, админ интерфейс на английском языке. Переключиться на русский вы можете внизу страницы:
▍Добавление телеканала
Разворачиваем меню «IPTV Каналы», открываем страницу «Каналы». В списке уже будет предустановленный телеканал «Test channel», удалите его и давайте добавим свой канал (кнопка «Add a channel»).
Заполняем основные поля: «Номер канала», «Название канала», загрузим логотип, поставим галочку «Базовый канал».
Нажимаем на кнопку «Добавить ссылку», появляется всплывающее окно с формой добавления URL канала и дополнительными опциями. Как мы видим из подсказки, в эту строку нужно ввести «solution+URL». Solution — это подсказка для плеера приставки, какую библиотеку использовать для воспроизведения. В большинстве случаем достаточно указать «auto» (например, «auto udp://239.255.1.1:5500»). Для HLS рекомендуемый Инфомиром solution — ffmpeg.
Так как у меня видеосервер Flussonic, я сразу включаю поддержку временных ссылок. Они нужны, чтобы защитить контент от несанкционированного просмотра.
В результате должно получится:
Пропустим пока настройку программы передач (EPG) и ТВ-архива (DVR). Сохраняем.
▍Добавление фильма
Меню «Видеоклуб» → «Список фильмов».
Процесс добавления фильмов не сильно отличается, но есть приятный бонус: автозаполнение. Достаточно написать название фильма/сериала на оригинальном языке и Stalker сможет получить метаданные из базы данных TMDB или Кинопоиск.
Вручную заполнять список актеров, логотип, режиссера, год выпуска, жанр и прочую информацию, без которой каталог фильмов на приставке будет выглядеть неполноценным, очень трудоемко, когда нужно добавлять много фильмов. Спасибо, Инфомир.
Есть возможность добавлять сериалы, с правильной сортировкой серий. Вам не понадобится заводить каждую серию как отдельный фильм и писать в названии номер сезона и серии.
Для каждого фильма или серии можно добавить несколько ссылок для просмотра в разном качестве, это может быть удобно, если у вас уже есть исходники в разных качествах и вы не используете мультибитрейтный HLS.
▍Программа передач (EPG)
Без программы передач строить сервис нельзя, людям уже давно не интересно просто щелкать каналы. EPG нужна не только для того, чтобы пользователь мог посмотреть как называется текущая передача и что будет сегодня вечером, а еще для организации видеоархива! Позволяя пользователям смотреть передачи, которые уже прошли (т.н. Catch UP).
Stalker умеет импортировать EPG из формата XMLTV.
XMLTV — популярный формат описания программы передач основанный на XML, поддерживается всеми поставщиками EPG. Содержит подробное описание: название, время начала, время окончания, жанр, описание, картинку, список актеров, возрастной рейтинг и прочую информацию.
Для продолжения настройки, нам надо добыть поставщика EPG. Они бывают платные, бывают бесплатные. Отличаются количеством телеканалов, количеством информации (например, картинки для каждой передачи и список актеров есть далеко не у всех). Рекламировать никакие сервисы не буду, найдите в Google программу передач в формате XMLTV и продолжим.
Открываем меню «IPTV каналы» → «EPG». Кнопка «Добавить EPG».
Нам потребуется вставить ссылку на веб-сервер, где лежит xml файл. Из собственного опыта добавлю, что поставщики чаще всего выкладывают на закрытый паролем ftp-сервер, и в добавок еще архивируют, поэтому в Stalker вставляем ссылку на localhost, а в crontab добавляем скрипт, который будет скачивать и распаковывать XMLTV в нужную папку.
После добавления ссылки, нажмите «обновить». Если все сделали правильно, получится:
Теперь переходим в настройки телеканала. Меню «IPTV каналы» → «Каналы», нажимаем редактировать наш телеканал. Нас интересует раздел «EPG», указываем ID нашего телеканала и, при необходимости, корректируем время под наш часовой пояс.
Первый канал
Россия 1
ТВЦ
НТВ
Россия Культура
ТНТ
Для каждого телеканала придется вручную указывать ID. Способа автоматизировать это я пока не знаю.
▍Внешний вид
Инфомир уже давно разрабатывает новый современный интерфейс, но он пока выключен по умолчанию. Я не заметил в нем явных багов, работает очень даже неплохо, именно его скриншот в начале статьи.
Чтобы активировать его, переходим в меню «Настройки» → «Внешний вид». На этой странице можем ознакомится со всеми доступными темами.
Нажимаем «Применить» под темой «Stalker 5x — graphite».
▍Запускаем портал на приставке
Надеюсь, у вас есть под рукой приставка MAG? С помощью пульта ДУ или USB-клавиатуры, переходим в настройки приставки → «Серверы» → «Порталы» и указываем URL сервера, куда вы установили Stalker.
URL для клиентов: http://ip/stalker_portal/c/
Сохраняем, перезагружаем приставку и попадаем в нашу Middleware. Никакие логины и пароли не потребуются, по умолчанию авторизация не требуется.
▍Что дальше?
В следующей статье мы настроим авторизацию приставок и защитим наш контент от несанкционированных просмотров. В мире очень много халявщиков и конкурентов/пиратов, желающих украсть ваш контент. Это не шутка, нам часто приходится помогать людям защитить их контент от просмотра на халяву и вставки на чужие сайты.