Строим полноценный IPTV/OTT сервис: Stalker Middleware

  • Tutorial
В этой статье я расскажу как установить бесплатную IPTV/OTT Middleware с открытым исходным кодом от компании Инфомир, зачем она нужна и какие возможности предоставляет пользователям и администраторам.

Статья будет полезна небольшим операторам и даже пользователям. Можно «поднять» у себя дома Stalker и использовать его для просмотра* бесплатных IPTV и интернет каналов на приставке. Самому организовать EPG и запись телеканалов.

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


image

▍Что такое Middleware?


В Википедии есть хорошее и краткое определение:
Middleware — промежуточное программное обеспечение для управления комплексом IPTV. Это основной компонент IPTV решения, так как он, в конечном итоге, и определяет набор услуг, доступный абоненту, пользовательский интерфейс, логику переходов и алгоритм управления. На Middleware возлагается роль координатора в процессе взаимодействия практически всех компонентов комплекса.

Я полностью согласен с этим определением. Построить IPTV/OTT сервис без Middleware невозможно. Разработчиков на рынке много, у каждой Middleware свои особенности: список поддерживаемых устройств, список поддерживаемых CAS-систем, пользовательский интерфейс, список поддерживаемых видеосерверов, разные API для биллинга, стоимость и поддержка.

Выбрав одно решение, оператор привязывается к Middleware и не может быстро и дешево поменять решение, потому что это потребует смены программного обеспечения на ТВ-приставках (или их замена, если список поддерживаемых устройств не совпадает). Так же потребуется заново провести интеграцию с биллингом, системой закрытия контента. Это время и деньги, и чем больше абонентская база, тем сложнее.

У нас на сайте есть хорошая статья про Middleware.

▍Почему Stalker?


В первую очередь Stalker интересен тем, что он бесплатный. Правда бесплатный, без пробных периодов и ограничения функционала. Исходный код можно скачать на GitHub.

Это очень важное преимущества Stalker перед решениями других производителей. Я работаю много лет в сфере IPTV и не знаю других бесплатных решений. Я спрашивал у коллег и даже разработчиков Инфомира, они тоже не знаю. Напишите в комментариях, если знаете другие бесплатные решения.

Не каждый оператор готов вкладывать деньги в покупку Middleware, потому что сразу не понятно зачем она вообще нужна. Вот спутниковые приемники принимают телеканалы, CAS-система защищает контент, приставки показывают видео, биллинг деньги считает. А что делает Middleware? Список каналов и погоду показывает?

Конечно же нет, но этого уже достаточно чтобы заинтересоваться бесплатным решением и установить Stalker на тестовый сервер чтобы познакомится поближе.

▍Установка


У Инфомира есть небольшая документация и образ VirtualBox
image Чтобы установить Stalker придется установить более 200 пакетов в вашу ОС. Рекомендую выделить отдельную виртуальную машину или установить в docker-контейнер, иначе могут возникнут конфликты с другими веб-сервисами.

Образ VirtualBox


Запуск образа VirtualBox дело не сложное, но опишу кратко как это делается:

  1. Установить VirtualBox. Сайт: www.virtualbox.org
  2. Скачать и распаковать zip-архив с образом. Актуальная ссылка на странице: http://wiki.infomir.eu/doku.php/stalker:start
  3. Запускаем VirtualBox, меню «Машина», нажимаем «Добавить» (Ctrl+A) и выбираем файл VmVirtualBox_Ubuntu14.04.4.x64_MW.Stalker.Demo
  4. Запускаем виртуальную машину, авторизуемся (test/test), смотрим IP-адрес машины и открываем в браузере административный интерфейс.
  5. В админ интерфейсе «Хранилища» изменить 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

▍Настройка


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

По умолчанию, админ интерфейс на английском языке. Переключиться на русский вы можете внизу страницы:

image

▍Добавление телеканала


Разворачиваем меню «IPTV Каналы», открываем страницу «Каналы». В списке уже будет предустановленный телеканал «Test channel», удалите его и давайте добавим свой канал (кнопка «Add a channel»).

Заполняем основные поля: «Номер канала», «Название канала», загрузим логотип, поставим галочку «Базовый канал».

Нажимаем на кнопку «Добавить ссылку», появляется всплывающее окно с формой добавления URL канала и дополнительными опциями. Как мы видим из подсказки, в эту строку нужно ввести «solution+URL». Solution — это подсказка для плеера приставки, какую библиотеку использовать для воспроизведения. В большинстве случаем достаточно указать «auto» (например, «auto udp://239.255.1.1:5500»). Для HLS рекомендуемый Инфомиром solution — ffmpeg.

Так как у меня видеосервер Flussonic, я сразу включаю поддержку временных ссылок. Они нужны, чтобы защитить контент от несанкционированного просмотра.

image

В результате должно получится:

image
Пропустим пока настройку программы передач (EPG) и ТВ-архива (DVR). Сохраняем.

▍Добавление фильма


Меню «Видеоклуб» → «Список фильмов».

Процесс добавления фильмов не сильно отличается, но есть приятный бонус: автозаполнение. Достаточно написать название фильма/сериала на оригинальном языке и Stalker сможет получить метаданные из базы данных TMDB или Кинопоиск.

image

Вручную заполнять список актеров, логотип, режиссера, год выпуска, жанр и прочую информацию, без которой каталог фильмов на приставке будет выглядеть неполноценным, очень трудоемко, когда нужно добавлять много фильмов. Спасибо, Инфомир.

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

Для каждого фильма или серии можно добавить несколько ссылок для просмотра в разном качестве, это может быть удобно, если у вас уже есть исходники в разных качествах и вы не используете мультибитрейтный HLS.

▍Программа передач (EPG)


Без программы передач строить сервис нельзя, людям уже давно не интересно просто щелкать каналы. EPG нужна не только для того, чтобы пользователь мог посмотреть как называется текущая передача и что будет сегодня вечером, а еще для организации видеоархива! Позволяя пользователям смотреть передачи, которые уже прошли (т.н. Catch UP).

Stalker умеет импортировать EPG из формата XMLTV.

XMLTV — популярный формат описания программы передач основанный на XML, поддерживается всеми поставщиками EPG. Содержит подробное описание: название, время начала, время окончания, жанр, описание, картинку, список актеров, возрастной рейтинг и прочую информацию.

Для продолжения настройки, нам надо добыть поставщика EPG. Они бывают платные, бывают бесплатные. Отличаются количеством телеканалов, количеством информации (например, картинки для каждой передачи и список актеров есть далеко не у всех). Рекламировать никакие сервисы не буду, найдите в Google программу передач в формате XMLTV и продолжим.

Открываем меню «IPTV каналы» → «EPG». Кнопка «Добавить EPG».

image

Нам потребуется вставить ссылку на веб-сервер, где лежит xml файл. Из собственного опыта добавлю, что поставщики чаще всего выкладывают на закрытый паролем ftp-сервер, и в добавок еще архивируют, поэтому в Stalker вставляем ссылку на localhost, а в crontab добавляем скрипт, который будет скачивать и распаковывать XMLTV в нужную папку.

После добавления ссылки, нажмите «обновить». Если все сделали правильно, получится:

image

Теперь переходим в настройки телеканала. Меню «IPTV каналы» → «Каналы», нажимаем редактировать наш телеканал. Нас интересует раздел «EPG», указываем ID нашего телеканала и, при необходимости, корректируем время под наш часовой пояс.

image

Как узнать XMLTV ID телеканала
Открываем текстовым редактором XMLTV файл и смотрим. В данном примере: «Первый канал» — 1, «Россия 1» — 2, «ТВЦ» — 3.
<channel id="1">
<display-name lang="ru">Первый канал</display-name>
<icon src="http://img.example.com/channel/1.gif" />
</channel>
<channel id="2">
<display-name lang="ru">Россия 1</display-name>
<icon src="http://img.example.com/channel/2.gif" />
</channel>
<channel id="3">
<display-name lang="ru">ТВЦ</display-name>
<icon src="http://img.example.com/channel/3.gif" />
</channel>
<channel id="4">
<display-name lang="ru">НТВ</display-name>
<icon src="http://img.example.com/channel/4.gif" />
</channel>
<channel id="5">
<display-name lang="ru">Россия Культура</display-name>
<icon src="http://img.example.com/channel/5.gif" />
</channel>
<channel id="101">
<display-name lang="ru">ТНТ</display-name>
<icon src="http://img.example.com/channel/101.gif" />
</channel>


Для каждого телеканала придется вручную указывать ID. Способа автоматизировать это я пока не знаю.

▍Внешний вид


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

Чтобы активировать его, переходим в меню «Настройки» → «Внешний вид». На этой странице можем ознакомится со всеми доступными темами.

image

Нажимаем «Применить» под темой «Stalker 5x — graphite».

▍Запускаем портал на приставке


Надеюсь, у вас есть под рукой приставка MAG? С помощью пульта ДУ или USB-клавиатуры, переходим в настройки приставки → «Серверы» → «Порталы» и указываем URL сервера, куда вы установили Stalker.

URL для клиентов: http://ip/stalker_portal/c/



Сохраняем, перезагружаем приставку и попадаем в нашу Middleware. Никакие логины и пароли не потребуются, по умолчанию авторизация не требуется.

▍Что дальше?


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

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Слышали вы про Stalker MW ранее?

Вы уже используете Stalker MW у себя в сети?

Эрливидео
39,00
Современный видеостриминговый сервер
Поделиться публикацией

Похожие публикации

Комментарии 29

    0
    Какие еще бесплатные Middleware есть?
      0

      Дайте Dockerfile и все прилагающееся плз.

      +1
      Надеюсь, у вас есть под рукой приставка MAG

      я всё это прочитал, чтобы под конец понять, что без специфичной железки это всё не работает? вы издеваетесь?
        +1
        ну почему сразу издеваться то.

        Во-первых, MAG очень популярны, потому что они достаточно надежны и очень дешевы.

        Во-вторых, есть способ протестировать это всё из браузера (правда, не помню насчёт самого видео).

        В-третьих, инфомир вроде как делает сейчас вариант для браузера и для смарт-ТВ

        Уж простите, IPTV миддлвари они под приставки почти все.
          0
          Добавлю, что есть еще Android и iOS приложения.
          update: вижу, ниже добавили ссылки на приложения
            0
            Во-вторых, есть способ протестировать это всё из браузера (правда, не помню насчёт самого видео).

            Пишет что прошивку надо обновить браузеру.
              0
              что-то типа debug vcpp.exe
                0
                нашел. сам себе отвечу http://<your_ip>/stalker_portal/c/?debug&debug_key=...&mac=…
                  0
                  там надо было ещё добавить несколько параметров, которые я постоянно забываю.

                  Что-то типа мак адреса и дебаг ключа.
                    0
                    Stalker MW можно запустить в браузере на компьютере в режиме отладки (для отладки интерфейса, видеоизображение доступно не будет)

                    Загрузить портал в режиме эмуляции по адресу:

                    http://<your_ip>/stalker_portal/c/?debug&debug_key=...&mac=...

                    debug_key необходимо взять из таблицы administrators.

                    Лучше всего использовать Google Chrome, при этом нужно точно установить размер окна для выбранного разрешения (1280х720, 720х576, 720х480)

                    http://wiki.infomir.eu/doku.php/stalker:faq

                0
                Я правильно понял, нельзя из обычного iptv плеера смотреть, например из smarttv?
                А как вообще сделать обычную для дома iptv чтобы можно было из любое приложение для iptv смотреть без всяких проблем?
                  0
                  Stalker MW — это веб приложение, предоставляющие пользователям приятный интерфейс для доступа к телеканалам, фильмам и дополнительным сервисам (погода, музыка, игры). Увы, запустить его на любом устройстве невозможно.

                  А сами потоки, будь то udp/multicast или HLS, можно смотреть в любом плеере без проблем.

                  Для дома, обычно, достаточно .m3u плейлиста, который понимают почти все устройства.
              +1
              Теперь пишите, как это смотреть без приставки MAG.
                +1
                … или хотя бы через VLC?
                А вообще есть идея завязать в поселке под эту middleware видеонаблюдение по сети. Идея для статьи вам.
                  +1
                  Может вам лучше тогда про наш Flussonic Watcher поподробнее рассказать?
                    0
                    Расскажите, может это не одному мне будет интересно.
                    PS: А существуют ли похожие некоммерческие варианты трансляции нескольких видеоисточников в свою локалку? Скажем, есть сервер в доме 7-8 камер, и хочется транслировать это по iptv на домашние телевизоры + на смартфон свой.
                    0
                    Спасибо, подумаю. Stalker для видеонаблюдения немного избыточен. Какие функции должны быть на конечных устройствах? Просмотр всего архива?
                      0
                      Просто хотелось бы иметь дома видеосервер для стриминга контента на 3-4 телевизора + видеонаблюдение по одному из каналов. Есть серверная железка, которую бы под это дело заточить. Пока там куча сервисов вроде видеохранилища для видеонаблюдения + торрентокачалка. А вот если бы сделать мини-IPTV-вещание, объединив все в одну приставку…
                        0
                        Какой софт вы сейчас используете для стриминга?
                          0
                          Вообще никакой. Ищу варианты и наткнулся на статью. Делал 5 каналов через vlc — не устраивает.
                    +1
                      0
                      во, супер!
                    +1

                    Даже в доккере запустить оказалось тем еще квестом.
                    Допилите до "docker-compose up -d", чтоб без всякого там /opt/deploy.sh и будет отлично.


                    Но все равно спасибо даже за это.

                      0
                      Сталкеру требуется писать на данные диск, не все хранится в базе данных, поэтому все равно придется volume использовать. Мы используем Stalker только для внутренних нужд, поэтому такой подход нас устраивает.

                      Вот Dockerfile и все остальное, извините, что в таком виде, не хочу отдельный git репозиторий делать, или в видe zip-архива отдавать. Скажу предупреждаю, в deploy.sh есть пару костылей, необходимых для того, чтобы автоматическую установку сделать без вмешательства пользователя. Попробуйте собрать Stalker сами, поймете о чем речь :)
                        0

                        Вот спасибо добрый человек. Допилю до нужного состояния сам. :)

                      0
                      Ставил по инструкции контейнеры на Ubuntu 16.04 LTS со свежим Докером и Композом. На последнем шаге выпала ошибка:

                      [exec] Executing command: cd /var/www/stalker_portal/server/tools/; php ./init_apps.php; chown -R www-da ta:www-data /var/www/stalker_portal/../stalker_launcher_apps/ 2>&1
                      PHP Fatal error: Uncaught exception 'SmartLauncherAppsManagerException' with message 'Unable to install appl ication' in /var/www/stalker_portal/server/lib/smartlauncherappsmanager.class.php:329
                      Stack trace:
                      #0 /var/www/stalker_portal/server/lib/smartlauncherappsmanager.class.php(496): SmartLauncherAppsManager->inst allApp(1, '5.1.0', false)
                      #1 /var/www/stalker_portal/server/lib/smartlauncherappsmanager.class.php(860): SmartLauncherAppsManager->addA pplication('stalker-apps-ba...', true, false, '5.1.0')
                      #2 /var/www/stalker_portal/server/lib/smartlauncherappsmanager.class.php(790): SmartLauncherAppsManager->rese tApps()
                      #3 /var/www/stalker_portal/server/tools/init_apps.php(10): SmartLauncherAppsManager->initApps()
                      #4 {main}
                      thrown in /var/www/stalker_portal/server/lib/smartlauncherappsmanager.class.php on line 329
                      [exec] Executing command: cd /var/www/stalker_portal/server/tasks/; php ./reset_paused.php nodelay 2>&1
                      [echo] Now you will be asked to specify MySQL root password.
                      [echo] ${zoneinfo.error.msg}
                      [exec] Executing command: /etc/init.d/apache2 restart 2>&1
                      [exec] Executing command: mkdir /var/log/stalkerd 2>&1
                      [chmod] Changed file mode on '/var/log/stalkerd' to 777



                      Потом, после авторизации выдал редирект на адрес: http://127.0.0.1/stalker_portal/server/adm
                      У меня 80 порт занят, поэтому я в compose файле для портала сделал редирект с 88 на 80, а на фронте настроил nginx по настройкам в официальной доке.

                      В чем может быть дело?
                        0
                        У вас в контейнере собрана полная связка apache + nginx. Для демонстрации может быть и удобно, но для нормального использования, я бы nginx убрал из контейнера и запускал бы на хост машине.

                        Кстати, проблема http://127.0.0.1 была вызвана тривиальной причиной, не были указаны необходимые настройки nginx proxy_pass директивы, в частности $host. Все работает при правильной настройке nginx. В моем случае это вот так:

                         root /opt/stalker;
                        
                            location / {
                                proxy_pass http://127.0.0.1:88/;
                                proxy_set_header Host $host:$server_port;
                                proxy_set_header X-Real-IP $remote_addr;
                                expires -1;
                            }
                        
                            location ~* \.(htm|html|jpeg|jpg|gif|png|css|js)$ {
                                expires 1d;
                            }
                        

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

                      Самое читаемое