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

Contents

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

Серверные списки воспроизведения создаются провайдером на сервере Flussonic. Они позволяют запускать ваш собственный телеканал, где вы выбираете, какие файлы и потоки транслировать.

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

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

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

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

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

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

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

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

Приведем здесь обзорно процесс создания плейлиста в Flussonic Media Server.

Прежде всего, поместите видео файлы на сервер и настройте VOD локацию (см. ниже).

Затем надо составить файл плейлиста. Пусть он будет в каталоге /tmp/playlist.txt. Можно расположить и на другом сервере. В плейлисте перечислите файлы для проигрывания:

vod/video1.mp4
vod/video2.mp4

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

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, то их проигрывание начнется сразу же и будет зациклено.

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

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

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

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

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

  • #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 не указана и сам файл плейлиста не менялся, то проигрывается следующий элемент. Если менялся, то проигрывание начинается с начала.

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

Например, у вас на 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)

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   //Позиция проигрывания внутри текущего элемента, в миллисекундах
}