Установка платформы IPTV/OTT. От исходных потоков до первого клиента.
Схематичное представление платформы
План работы
Первичные потоки
В данной статье используются тестовые потоки от различных поставщиков.
Транскодирование
Для целей предоставления услуги на всех возможных платформах, для обеспечения адаптивного битрейта используется транскодер TVIP Mira, в этой статье не рассматривается его конфигурирование.
Сегментация и публикация потоков, DVR
В роли стримера выступает Flussonic, его настройки будут описаны ниже, на вход flussonic настроены выходные потоки из транскодеров.
Защита потоков
Настройка TVIP CAS на работу с TVIP TMS и flussonic
Настройка каналов в TMS
Оформление каналов (Логотипы, названия, привязка к EPG), использование fake epg
Создание тарифных планов.
Создание аккаунта пользователя
Базовые данные пользователя, назначение тарифных планов
Подключение устройств к аккаунту
Демонстрация подключения различных устройств к аккаунту пользователя
  • С использованием логина и пароля
  • С использованием QR кода
  • С использованием опции quick binging
API для взаимодействия с TVIP TMS
Примеры включения\отключения аккаунта пользователя, назначение тарифных планов. Примеры на Curl
Сегментация и публикация потоков
В данной работе мы не рассматриваем настройку транскодера для целей телевещания, на выходе из транскодера будут доступны следующие потоки:

HD media:
udp://226.181.0.41:1234
Живая природа: udp://226.181.0.220:1234
RT HD: udp://226.181.0.14:1234
RTД HD: udp://226.181.0.124:1234
Мир 24 HD: udp://226.181.0.252:1234
Мир Премиум HD: udp://226.181.0.251:1234
DW: udp://226.181.0.196:1234
France 24: udp://226.181.0.86:1234
Bridge Русский Хит: udp://226.181.0.194:1234
Bridge TV Classic: udp://226.181.0.190:1234
Глазами Туриста: HD:udp://226.181.0.218:1234

Все потоки имеют несколько видеодорожек с разным битрейтом. Выходной поток HLS с Flussonic будет поддерживать адаптивный битрейт.

При настройке flussonic необходимо ответственно подойти к названию потока, в дальнейшем, в TMS оно будет использовано для организации услуг timeshift и catch-up.
Как вообще работает адаптивный битрейт?
Рассмотрим выходной поток из Flussonic на примере содержимого плейлиста, с которым будет работать плеер. Ориентируясь на теги BANDWIDTH, AVERAGE-BANDWIDTH, плеер запускает вещание с одного из битрейтов, указанных вещателем (первый в плейлисте). В дальнейшем плеер постоянно измеряет скорость загрузки сегментов медиа и переключается на самое лучшее качество, которое обеспечивает пропускная способность соединения.
$ curl https://tv-demo.tviplabs.com/hdmedia/video.m3u8
#EXTM3U
#EXT-X-STREAM-INF:RESOLUTION=1920x1080,FRAME-RATE=30.000,CODECS="avc1.640028,mp4a.40.2",AVERAGE-BANDWIDTH=5130000,BANDWIDTH=6410000
tracks-v1a1/mono.m3u8
#EXT-X-STREAM-INF:RESOLUTION=1280x720,FRAME-RATE=30.000,CODECS="avc1.64001f,mp4a.40.2",AVERAGE-BANDWIDTH=3140000,BANDWIDTH=3930000
tracks-v2a1/mono.m3u8
#EXT-X-STREAM-INF:RESOLUTION=1024x576,FRAME-RATE=30.000,CODECS="avc1.64001f,mp4a.40.2",AVERAGE-BANDWIDTH=1750000,BANDWIDTH=2190000
tracks-v3a1/mono.m3u8
Timeshift, Catch-up, DVR
Timeshift - пауза эфира
Catch-Up, DVR - доступ к архиву эфира, возможна как сквозная перемотка, так и выбор конкретной передачи для просмотра.

Все эти услуги реализуются за счет DVR flussonic, реальный timeshift будет доступен только в пределах архива.

Подбор аппаратной платформы для DVR достаточно трудоемкая задача, помимо общего объема архива, его распределения по дискам, надо учитывать скорость чтения (доступа к архиву), того или иного диска. В процессе эксплуатации популярные каналы разносятся на разные диски, для обеспечения быстрого доступа к конкретным записям.
Пример настройки одного канала в стримере Flussonic
Конфигурационный файл flussonic находиться по адресу /etc/flussonic/flussonic.conf

В данном конфиге отключены все протоколы стриминга, кроме HLS, настроен архив на 5 дней, но он не может занимать более 95% раздела, так же настроен DRM - получение ключей шифрования от TVIP CAS (https://keys-demo.tviplabs.com).
TVIP CAS реализован на базе AES-128, который реализован на всех возможных плеерах, что дает большее покрытие, чем альтернативные DRM системы.

Подробное описание настройки потокового вещания.
stream hdmedia {
  url udp://226.181.0.41:1234;
  dvr /data 5d 95%;
  hds off;
  rtmp off;
  rtsp off;
  dash off;
  mpegts off;
  m4s off;
  m4f off;
  drm aes128 keyserver=https://keys-demo.tviplabs.com/cas-server;
}
Настройка CAS сервера
Конфигурационный файл CAS сервера находится в /opt/tvip-cas/application-prod.yml

В данном примере он находится за NGINX proxy установленный на том же сервере, который обеспечивает SSL и балансирование, в данном примере балансирование не рассматривается, общая рекомендация - всегда размещать сервис за NGINX.

Из существенных настроек - необходимо указать адреса всех TMS работающих с CAS сервером и адреса всех стримеров (в нашем случае - flussonic), так же необходимо указать private-key и secret-key.
spring:
  redis:
    host: localhost
    port: 6379
    password: c8f1ee9a7c5fd4b3c66d7559e99807d0
server:
  port: 8081

servers:
# Address list of TMS servers. This CAS server may subscribe on these servers to get any appropriate notify requests and
# may get content access information. This feature is allowed for master CAS servers only.
  tms-servers:
    - 185.84.33.186:8605
# Address list of streaming servers that are allowed to send requests to this CAS server
  stream-servers:
    - 185.84.33.187
# Alias that will be specified as the URL root, when the link is being generated for the client to get the encryption key
# to decrypt the content segment
  user-key-url-alias:
    https://keys-demo.tviplabs.com
# Address list of proxy servers. They are allowed to mask the actual server remote address and deliver it to check
# in "white" list of servers (TMS or streaming) depending on the request context.
  proxy-servers:
    - 127.0.0.1
# If non-empty value specified, it means that this CAS server works as slave
# and may not write any content access information or generate content encryption keys, but only
# deliver any existing keys if allowed by content access info. Master server URL must have no prefix, but port,
# like master.keys.domain.com:8081
  master-server:

# Application settings
app:
# Used as the application identifier, when interacting with TMS servers
  name: 'keys-demo.tviplabs.com'
# Application-specific prefix for keys in Redis
  namespace: 'cas-server'
# Private key that is used to sign requests from CAS server application
  key: 'f698f997c68f2db029e612e95566badbf'
# Secret that may be used to generate key in case of fail back scenario.
# If no specified or empty, fail back key generation is not used.
  secret: 'real-secret-key'
С стороны TMS настройка ограничивается вводом адреса CAS сервера и ключа, заданного в настройках CAS сервера
Подключение CAS сервера к TMS
Итоги настройки Flussonic
На данном этапе мы имеем набор потоков, архив каждого канала на 5 дней, потоки защищены от несанкционированного доступа

HD media: https://tv-demo.tviplabs.com/hdmedia/video.m3u8
Живая природа: https://tv-demo.tviplabs.com/zhivayapriordahd/vide...
RT HD: https://tv-demo.tviplabs.com/rthd/video.m3u8
RTД HD: https://tv-demo.tviplabs.com/rtdhd/video.m3u8
Мир 24 HD: https://tv-demo.tviplabs.com/mir24hd/video.m3u8
Мир Премиум HD: https://tv-demo.tviplabs.com/mirpremiumhd/video.m3...
DW: https://tv-demo.tviplabs.com/deutschewelleenglish/...
France 24: https://tv-demo.tviplabs.com/france24/video.m3u8
Bridge Русский Хит: https://tv-demo.tviplabs.com/bridgetvruskyhit/vide...
Bridge TV Classic: https://tv-demo.tviplabs.com/bridgetvclassic/video...
Глазами Туриста HD: https://tv-demo.tviplabs.com/glazamituristahd/vide...

Для организации DVR в нашем примере использован dvr-demo.tviplabs.com, советуем на уровне логики разносить live и dvr вещание, в более сложных примерах это позволяет упростить дальнейшее конфигурирование.


TVIP TMS поддерживает два протокола:
XMLTV
EPG-Service
В примере приведен протокол XML-TV от epgservice.ru
Настройка EPG
TMS поддерживает создание нескольких источников DVR, в нашем примере один сервер DVR.
В его опциях необходимо указать адрес dvr сервера (flussonic) и глубину архива по умолчанию в секундах. В примере - 5 дней.
Настройка DVR
При создании канала следует обратить внимание на System-name оно должно в точности повторять название потока в flussonic, исходя из этого названия формируются URL для архива.
Для настройки DVR - необходимо выбрать DVR сервер, созданный в предыдущем шаге.
Для настройки EPG - необходимо выбрать название канала в источнике EPG.
Настройка канала
Тарификация услуг
Тарифы реализованы через системы тегов на каналы и тарифные планы, более подробная информация - по ссылке.
Управление подписками доступно как в панели администратора, так и через API. Для проверки проделанной работы, после добавления каналов и настройки тарифных планов - проверим работу через веб портал.
Создадим пользователя demo с паролем 12345678 и добавим ему подписку на тариф Base.
Добавление подписки
Портал доступен по адресу https://tms-demo.tviplabs.com/portal
Контакты
Санкт-Петербург, Серебристый бульвар дом 17 корпус 1
Phone:
+7 (812) 670-46-56
E-mail: sales@tviplabs.com

Made on
Tilda