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

Доступ к DVR по различным протоколам

Основные способы доступа к архиву Anchor Anchor x2

Доступ к записанному архиву осуществляется на основании времени в UTC. Подобный подход реализован для удобства из-за постоянной смены летнего/зимнего времени и т.п.

На этой странице:

Проигрывание по HLS Anchor Anchor x2

HLS может проигрываться на компьютере и приставке, но в особенности HLS нужен для проигрывания видео на мобильных устройствах (iOS, Android).

Для доступа к видео по HLS нужно использовать URL-адрес: http://flussonic:8080/channel/archive-1350274200-4200.m3u8

Этот URL означает, что Flussonic Media Server должен отдать 4200 секунд с секунды 1350274200 в виде файла, к которому осуществляется доступ по HLS. Число 1350274200 — это UNIX time, указанное по времени UTC.

Если оригинальный поток имеет более одной аудио или более одной видео дорожки, то по указанному URL отдается variant playlist по стандарту Apple, который позволяет устройствам под управлением iOS (iPhone, iPad) выбирать язык и битрейт. Сегменты в этом случае отдаются с уменьшенным количеством дорожек. Если вы используете какое-то другое устройство (не Apple), то вам пригодятся специальные URL.

Этот режим особенно удобен для демонстрации передач по расписанию: в веб-интерфейсе middleware можно указать такой адрес на основании расписания и не надо тратить место на запись отдельных передач.

В OSMF плеере эта функциональность выглядит так:

DVR OSMF плеер

Мультиязыковой HLS и моноязыковой HLS Anchor Anchor x2

Для приставок, которые не полностью поддерживают HLS, можно указывать специальные video-URL.
Разница в том, что по такому адресу отдаются сегменты видео со всеми аудиодорожками.
Это нарушение стандарта HLS, но большинство приставок может работать только в таком режиме.

Вот список поддерживаемых URL-адресов (для разных методов доступа):

  • с фиксированным временем начала и конца: http://flussonic:8080/channel/video-1350274200-4200.m3u8
  • c абсолютным таймшифтом: http://flussonic:8080/channel/video-timeshift_abs-1350274200.m3u8
  • c возможностью отмотки назад: http://flussonic:8080/channel/video-1350274200-now.m3u8
Перемотка и таймшифт описаны в соответствующей части статьи.

Проигрывание по HDS Anchor Anchor x2

Необходимо использовать URL: http://flussonic:8080/ORT/archive-1350274200-4200.f4m

Ранее использовался следующий URL: http://flussonic:8080/channel/archive/1350274200/4200/manifest.f4m, который некоторое время будет поддерживаться параллельно, но в последующих релизах поддержка URL прежнего вида будет удалена.

Этот URL означает, что Flussonic Media Server должен отдать 4200 секунд с секунды 1350274200 в виде файла, к которому осуществляется доступ по HDS. Число 1350274200 — это UNIX time, указанное по времени UTC.

HDS нужен для использования во flash-плеерах. На устройствах под управлением Apple iOS (iPhone, iPad) проиграть его не получится.

Проигрывание по HTTP MPEG-TS Anchor Anchor x2

Фрагмент архива можно получить не на полной скорости, а в потоковом режиме, то есть за время, совпадающее с протяженностью этого фрагмента. По адресу http://flussonic:8080/channel/timeshift_abs-1508403742.ts архив отдается по протоколу MPEG-TS в потоковом режиме.

Проигрывание по DASH Anchor Anchor x2

Фрагмент архива можно проиграть по протоколу DASH в виде файла, используя URL следующего вида:

http://flussonic:8080/channel/archive-1350274200-4200.mpd

Этот URL означает, что Flussonic Media Server должен отдать диапазон в 4200 секунд с момента времени 1350274200 в Unix timestamp.

DASH манифест для проигрывания неоконченных трансляций из архива Anchor Anchor x2

Замечание. Эта информация нужна, если вам требуется использовать статический манифест при проигрывании неоконченных трансляций из архива по DASH.

http://flussonic:8080/channel/archive-1350274200-4200.mpd

  • 1350274200 — время начала отрывка для проигрывания из архива.
  • 4200 — сколько секунд проиграть.

Проигрывание по DASH неоконченных трансляций из архива DVR

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

Flussonic позволяет выбирать, какой DASH манифест (плейлист) будет отсылаться клиенту. Бывает динамический (обновляемый) или статический DASH манифест.

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

Чтобы указать вид манифеста, используйте параметр dynamic:

  • dynamic=false. Будет формироваться статический манифест. В этом случае архив будет проигрываться как файл. Манифест будет содержать информацию о запрошенном диапазоне из архива и не будет обновляться.

    http://flussonic:8080/channel/archive-1350274200-4200.mpd?dynamic=false

  • dynamic=auto. Это поведение по умолчанию, и этот параметр можно не указывать. Сначала будет формироваться динамический манифест (пока идет прямая трансляция), который поменяется с динамического на статический в момент, когда трансляция в реальном времени достигнет конца запрошенного диапазона.

    http://flussonic:8080/channel/archive-1350274200-4200.mpd?dynamic=auto

Проигрывание по RTMP Anchor Anchor x2

Flussonic Media Server может проигрывать архив по протоколу RTMP. Для этого надо указать следующие аргументы:

var flashvars = {
    streamer:'rtmp://flussonic/rtmp',
    file: 'ort?from=1398267588&to=1398268588',
    'rtmp.tunneling':false,
    autostart: true
  };
  swfobject.embedSWF('/flu/jwplayer.swf',element,'640','480','10.3','false', flashvars,
   {allowfullscreen:'true',allowscriptaccess:'always'},
   {id:'jwplayer',name:'jwplayer'}
  );

Указывывается имя потока, но добавлятся query string с обязательным параметром from и опциональным параметром to.

Также можно указать параметр speed=2, speed=4 или speed=8 и тогда Flussonic Media Server будет проигрывать архив без звука в ускоренном режиме.

Проигрывание по RTSP Anchor Anchor x2

Flussonic Media Server может проигрывать архив по протоколу RTSP. Для этого надо запросить следующий URL:
rtsp://flussonic/ort?from=1398267588&to=1398268588

Указывается имя потока, но добавляется query string с обязательным параметром from и опциональным параметром to.

Также можно указать параметр speed=2, speed=4 или speed=8 и тогда Flussonic Media Server будет проигрывать архив без звука в ускоренном режиме.

Просмотр со сдвигом по времени (таймшифт) Anchor Anchor x2

Таймшифт с относительным временем

К архиву можно обратиться как к обычному источнику, но со смещением во времени. Для каждого протокола существует свой URL:

  • MPEG-TS: http://flussonic:8080/channel/timeshift_rel/3600
  • HLS: http://flussonic:8080/channel/rel-timeshift_rel-3600.m3u8
  • mono HLS://flussonic:8080/channel/mono-timeshift_rel-3600.m3u8

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

Таймшифт с абсолютным временем

По URL http://flussonic:8080/channel/timeshift_abs-1350274200.ts можно получить MPEG-TS поток с указанной секунды. Например, это может быть удобно для старых приставок и для демонстрации записанных передач по расписанию.

Трансляция события с отмоткой назад

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

  • Для HDS доступ осуществляется по адресу URL: http://flussonic:8080/ORT/archive-1350274200-now.f4m (ранее использовался URL: http://flussonic:8080/channel/archive/1350274200/now/manifest.f4m).
  • Для HLS существуют два URL: Первый: http://flussonic:8080/channel/archive/1350274200/now/index.m3u8 работает только с продуктами Apple. Второй: http://flussonic:8080/channel/index-1350274200-now.m3u8 будет работать везде.
  • Для DASH: http://flussonic:8080/channel/archive-From-now.mpd

Здесь 1350274200 — это UNIX time в секундах по времени UTC.

В OSMF плеере эта функциональность выглядит так:

DVR отмотка назад

Запуск таймшифт-потока с постоянной задержкой

Чтобы запустить дополнительный поток, который отстает от реального времени на постоянное время, следует воспользоваться дополнительным типом источников:

stream channel {
  url tshttp://vlc:9090;
  dvr /storage 10080;
}
stream channel-1hour {
  url timeshift://channel/3600;
}

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

Повторные запросы к timeshift

Часто возникает вопрос: при повторных обращениях к одному и тому же HLS URL с использованием timeshift_abs, в плеере проигрывается разное видео. Почему так, разве абсолютный URL не должен указывать на вполне конкретное время — то, которое передали ему параметром?

Дело в том, что, когда запрашивается HLS URL для какого-то потока, Flussonic Media Server открывает для него новую сессию.
Если timeshift URL используется много раз, любой новый запрос продолжает использовать эту же самую сессию.
Иначе говоря, все запросы к видео выполняются относительно текущей сессии.
Так что, если используется одно и то же значение времени в параметре timeshift_abs, на самом деле это не совершенно «абсолютное» время, ведь оно всё еще рассчитывается относительно текущей сессии.
Поэтому каждый раз, когда запрашивается одно и то же время, оно в конечном счёте пересчитывается в разное время, и вы видите разное видео.
Это нормальное поведение, а не баг и не ошибка пользователя. Это единственный хороший способ реализовать HLS timeshift.

Это поведение можно обойти вручную, чтобы каждый все-таки получать одно и то же видео.
Для этого у каждого нового запроса нужно менять token. Изменение token заставляет Flussonic Media Server создавать новую сессию.

Например:
http://flussonic:8080/mystream/timeshift_abs-1430227800.m3u8?token=123
http://flussonic:8080/mystream/timeshift_abs-1430227800.m3u8?token=124
http://flussonic:8080/mystream/timeshift_abs-1430227800.m3u8?token=125
И так далее.