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

Contents

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

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

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

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

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

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

Для приставок, которые не полностью поддерживают 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

Необходимо использовать 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

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

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

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

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

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

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

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

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

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

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

К архиву можно обратиться как к обычному источнику, но со смещением во времени. Для каждого протокола существует свой 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
И так далее.