Документация на 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. Группы каналов

Серверные плейлисты

Серверные плейлисты создаются провайдером на сервере Flussonic.

Серверные плейлисты имеют ряд недостатков при их использовании в Интернете для вставки видео на сайт:

  • невозможность таргетировать рекламу;
  • невозможность учитывать рекламу через adriver и другие подобные сети;
  • сложность сделать мультибитрейтной доставки: разные файлы могут иметь разное количество разных битрейтов;
  • технически неоправданно сложно делать отмотку назад, а это одно из основных преимуществ интернет-доставки по сравнению с эфирной;
  • пауза слишком сложна в реализации.

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

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

Применение серверных плейлистов Anchor Anchor x2

Серверные плейлисты разумно использовать для:

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

Создание серверных плейлистов Anchor Anchor x2

Если вы всё-таки решили пользоваться серверными плейлистами, то в Flussonic Media Server есть их реализация.

Для этого надо сначала составить файл плейлиста, пусть он будет в каталоге /tmp/playlist.txt. В плейлисте перечислены файлы для проигрывания:

vod/video1.mp4
vod/video2.mp4

В конфигурационном файле должны быть следующие строчки:

http 80;
stream playlist1 {
 url playlist:///tmp/playlist.txt;
}
stream playlist2 {
 url playlist://http://host/playlist.txt;
}
file vod {
 path /var/movies;
}

Если в каталоге /var/movies есть файлы video1.mp4 и video2.mp4, то их проигрывание начнется сразу же и будет зациклено.

Плейлист состоит из URL и управляющих команд:

#EXT-X-MEDIA-SEQUENCE:20
#EXT-X-PROGRAM-DATE-TIME:2013-02-12T12:58:08Z
vod/video1.mp4
#EXTINF:64,
vod/video2.mp4

Управляющие команды Anchor Anchor x2

Плейлист поддерживает управляющие команды:

  • #EXT-X-MEDIA-SEQUENCE — номер первого элемента плейлиста. Используется для правильной ротации и обновления плейлиста.
  • #EXTINF — продолжительность в секундах проигрывания элемента плейлиста. Может использоваться для вставки прямого эфира.
  • #EXT-X-UTC — Unix Timestamp того времени, когда надо начать проигрывать элемент плейлиста
  • #EXT-X-PROGRAM-DATE-TIME — время начала проигрывания элемента плейлиста в формате ISO 8601: 2013-02-12T12:58:38Z по GMT.

После завершения каждого файла плейлист перечитывается.

Надо учитывать следующие правила обработки плейлистов:

  1. Если указана опция EXT-X-MEDIA-SEQUENCE, то запоминается последний проигранный номер и после перечитывания проигрывание продолжается со следующего номера. То есть содержимое нового плейлиста может быть любым, синхронизация будет осуществляться со следующего номера. Если в новом плейлисте все номера меньше, чем последний проигранный, то плейлист будет каждую секунду перечитывать файл, ожидая появления правильного номера;
  2. Если опция EXT-X-MEDIA-SEQUENCE не указана и сам файл плейлиста не менялся, то проигрывается следующий элемент. Если менялся, то проигрывание начинается с начала.

Использование потоков в плейлисте Anchor Anchor x2

Например, у вас на Flussonic есть такие два потока: cam1 и cam2:

stream cam1 {
 url  rtsp://192.168.1.21:554/user=admin&password=&channel=0&stream=0;
}
stream cam2 {
 url  rtsp://192.168.1.22:554/user=admin&password=&channel=0&stream=0;
}

В плейлисте playlist.txt запишем имена потоков:

#EXTINF: 60
cam1
#EXTINF: 60
cam2

Информация о состоянии плейлиста (playlist) Anchor Anchor x2

HTTP API позволяет запросить текущее состояние плейлиста и получить JSON ответ с данными.

URL: /flussonic/api/playlist/STREAM_NAME

Пример: http://example.flussonic.com:8080/flussonic/api/playlist/example_stream

Параметры: 

  • STREAM_NAME — имя потока. Обязательный параметр

Ответ: JSON вида

{
    "current_entry":"vod/ir.mp4",   //Идентификатор текущего элемента в плейлисте
    "current_type":"file",   //Тип текущего элемента в плейлисте
    "duration":null,   //Длительность текущего элемента в миллисекундах (null - неизвестна)
    "position":5.22e4   //Позиция проигрывания внутри текущего элемента, в миллисекундах
}

Подробнее о серверных плейлистах.