Документация на Flussonic Media Server

  1. Быстрый старт
  2. How To
  3. Потоковое вещание
    1. Публикация
    2. Прием мультикаста
    3. Варианты источников
    4. Переключение источников
    5. Плейлисты
    6. Наложение логотипа
    7. Миксер
    8. WebRTC публикация
    9. SDI
    10. Отправка на другие сервера
    11. Распознавание DVB субтитров
  4. Транскодер
    1. Логотип
    2. Hardware
    3. Скриншоты
    4. Мозаика
  5. DRM
    1. Simple CAS
    2. Conax DRM
    3. BuyDRM (KeyOS)
  6. Авторизация
    1. Конструктор бэкендов
    2. Сервис сбора статистики
    3. Domain lock
    4. Middleware
    5. Secure links
    6. Ограничение сессий
    7. Мультиавторизация
    8. Бан IP адресов
    9. DVR
    10. Aliaser
  7. API
    1. HTTP API
    2. Events API
    3. MySQL API
    4. SQL API для кластеров
    5. SNMP
  8. Кластер
    1. Ретрансляция
    2. Кластерный захват
    3. Балансировщик нагрузки
    4. Пиринг
    5. Организация CDN
  9. VOD
    1. Кэш
    2. Облако
    3. Транскодирование файлов
  10. DVR
    1. Настройка
    2. Timeshift
    3. Catchup
    4. Проигрывание
    5. Экспорт в MP4
    6. Доступ по протоколам
    7. Timelapse
    8. API
    9. Кластеризация DVR
    10. Репликация
    11. Облако
  11. Воспроизведение
    1. HLS
    2. embed.html
    3. HTML5 с низкой задержкой
    4. Плеер HTML5 с низкой задержкой
    5. MPEG-TS
    6. RTMP
    7. DASH
    8. HDS
    9. RTSP
    10. multicast, CBR UDP
    11. WebRTC проигрывание
    12. H.265
  12. Администрирование
    1. Установка
    2. Обновление

    3. Конфигурация
    4. Мониторинг
    5. Производительность
    6. Лицензия
    7. LUA скрипты
    8. Безопасность
    9. Let's Encrypt
    10. Миграция
  13. IPTV
    1. Захват спутникового видео
    2. Транскодирование
    3. Middleware в IPTV OTT
    4. Экспорт EPG со спутника
    5. Группы каналов

Транскодирование

Со спутника видео передается либо в кодеке MPEG-2, либо в H.264 (он же AVC или MPEG-4 part10). Как правило для простоты MPEG-4 part 10 сокращают до MPEG-4, но тут важно не спутать с MPEG-4 part 2, который совершенно никак не совместим и не похож на H.264 и использовался в старых IP камерах.

Аудио передается в MPEG audio layer 2 (сокращенное mp2), либо в ac3 (a/52).

Причём важно понимать, что сегодня H264 как правило сжимается с intra-refresh, т.е. в видео потоке нет опорных кадров (IDR или keyframe). Такой метод сжатия позволяет сгладить скачки битрейта.

В результате ни один из передаваемых со спутника вариантов аудио или видео не проигрывается на айфоне. В браузере проигрывается только H264.

При передаче через интернет как правило можно смело сжимать видео из mpeg2 в h264 с трехкратным снижением трафика.

При передаче HD каналов через интернет сегодня приходится сжимать поток в несколько разных качеств: от HD с максимальным качеством до стандартного SD для компенсации перегруженных каналов.

В итоге видео со спутника для предоставления качественного OTT сервиса надо транскодировать в другие кодеки и качества.

Важно не путать транскодирование с перепаковкой. Транскодирование — крайне ресурсоёмкая операция, включающая в себя:

  • распаковку потока до кодированного видео/аудио
  • декодирование до сырого видео/аудио
  • изменение размеров и прочих параметров
  • кодирование обратно
  • упаковка в транспорт для потока

Упаковка и распаковка относительно легкие операции, стриминговый сервер может обрабатывать до 1000 каналов на одном компьютере. Транскодировать на одном компьютере можно от 1 до 30 каналов в зависимости от размера и мощности компьютера.

Для транскодирования можно использовать специализированные выделенные устройства, центральный процессор или видеоплату: внешнюю или встроенную в процессор.

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

H.264 Anchor Anchor x2

Для обработки видео на CPU существует несколько разных программ, но по большому счёту на сегодняшний день существует лишь две библиотеки, которые имеет смысл использовать для сжатия в кодек H.264 на CPU: это бесплатная libx264 и платная MainConcept. Всё остальное либо хуже, либо сильно хуже, причём как по выходному результату, так и по использованию ресурсов.

Практика работы с MainConcept в этой статье рассматриваться не будет, будет упомянута только libx264

Кодек H.264 является стандартом де-факто на сегодняшний день для видео, потому что он поддерживается во всех современных устройствах, за исключением разве что некоторых устройств от Google.

Альтернатив ему практически нет. Сегодня появился и развивается H.265, у него уже есть большая поддержка, но пока что работа с ним — это инвестиции в будущее.

Кодеки от Google: VP8 и VP9 являются больше желанием гугла перетянуть одеяло на себя, нежели чем-то реально полезным. Результирующее качество хуже, поддержки аппаратного декодирования нет, а следовательно растет цена устройства.

При кодировании видео надо понимать, что приходится балансировать между такими параметрами:

  • задержка внутри энкодера в кадрах
  • использование CPU (сколько миллисекунд требуется на сжатие одного кадра)
  • выходное качество картинки (насколько пиксельная и какие цвета)
  • выходной битрейт

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

Для VOD такого жесткого ограничения нет и фильм длиной в час вполне можно кодировать три часа, если хочется понизить битрейт. При этом для эфирного видео обычно всё таки стараются использовать не всю мощность процессора, что бы обрабатывать на одном компьютере не 4 канала, а 10.

Что касается задержки внутри энкодера, то она критична для видеоконференций, но совершенно некритична для IPTV. Даже 5 секунд задержки при вещании телевидения не меняют качество сервиса.

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

Понимание этой сложной взаимосвязи нужно для того, что бы лучше воспринимать заверения о том, что «наш энкодер самый лучший энкодер в мире». Сравнивать приходится минимум по 4-м параметрам, но в итоге всё сводится к тому: сколько денег стоит разово и в месяц транскодирование одного канала с желаемым качеством и выходным битрейтом.

VLC и ffmpeg Anchor Anchor x2

Самым частым инструментом для транскодирования видео со спутника в пригодный для OTT вид является программа VLC или ffmpeg.

Обе этих программы используют одну и ту же библиотеку libx264 для сжатия H.264 и одну и ту же библиотеку libavcodec для декодирования H.264 в сырое видео, но используют разный код для депакетизации MPEG-TS и разный код для декодирования mpeg2 видео.

В эксплуатации они отличаются тем, что VLC может работать как HTTP MPEG-TS сервер, а ffmpeg может только публиковать видео по HTTP MPEG-TS или RTMP на сервер.

Это различие влияет на организацию сети обработки видео. Дело в том, что когда каналов больше 150 и общее количество компьютеров переваливает за 25-30, запомнить что где находится сложно и категорически не нужно.

Поэтому когда на стриминговом сервере явно указано, откуда брать поток, это бывает удобнее, чем выяснять, откуда идет публикация видео.

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

Flussonic Media Server для транскодирования Anchor Anchor x2

Отдельным пакетом к Flussonic Media Server идет транскодер, основанный на ffmpeg. Пакет называется flussonic-ffmpeg и поставляется со всеми исходниками.

Flussonic Media Server может декодировать видео из UDP/HTTP MPEG-TS, RTMP источников и кодировать его в несколько качеств и размеров.

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

Важно отметить, что для того, что бы видео игралось на айфоне, надо даже H264 со спутника транскодировать, потому что как правило на спутнике для плавного битрейта используется intra-refresh режим кодирования, создающий видео, которое не играется на айфоне.

Flussonic Media Server удобнее чем VLC или другие варианты для организации транскодирования, потому что управляется одним конфигурационным файлом и автоматически следит за состоянием транскодирования. VLC же требует написания большого количества мониторинговых скриптов для отслеживания состояния транскодирования.

Следующая важная возможность Flussonic Media Server для транскодирования — автоматическая перебалансировка потоков при падении одного из серверов. Если один из 20 транскодеров ночью сломается, то остальные транскодеры можно настроить на автоматический захват потоков для транскодирования, причём стример сам заберет потоки с резервных транскодеров.