Доступ к DVR по различным протоколам
Основные способы доступа к архиву
В этом разделе вы найдете URL-адреса для различных сценариев доступа к DVR для каждого из поддерживаемых протоколов, со ссылками на соответствующие методы нашего Streaming API.
Доступ к записанному архиву осуществляется на основании времени в UTC. Подобный подход реализован для удобства из-за постоянной смены летнего/зимнего времени и т.п.
На этой странице:
Сценарии доступа к DVR
Вы можете получать доступ к архиву DVR, используя следующие основные сценарии использования:
- DVR Catchup. Проигрывание указанного окна DVR. Например, вы можете проиграть телепрограмму, если знаете время ее начала и окончания из электронной программы передач.
- Проигрывание событий. Проигрывание текущего события с возможностью перемотки назад до указанного момента времени в секундах.
- Перемотка. Перемотка потоков и постановка их на паузу.
- Таймшифт. Доступ к архиву как к обычному источнику, но со сдвигом по времени.
DVR Catchup
Если ваш поток записывается в архив с помощью DVR, вы можете проиграть фрагмент видео по HLS или DASH, зная время его начала и окончания, например, из электронной программы передач.
Пример для HLS:
http://FLUSSONIC-IP:80/STREAM_NAME/archive-1652249647-3600.m3u8
Плейлист будет содержать список сегментов, начиная с UTC 1652249647 (11 мая 2022 г 06:14:07 GMT), на протяжении часа.
Проигрывание событий
Эта функция работает для HLS и DASH. Она позволяет просматривать прямую трансляцию с возможностью перемотки назад до указанного времени в секундах. Проигрывание событий может быть полезно, если вы хотите дать возможность пользователю найти конкретный момент в событии, например, в вебинаре, концерте, телевизионном шоу.
Пример для HLS:
http://FLUSSONIC-IP:PORT/STREAM_NAME/archive-1652249647-now.m3u8
1652249647 — UNIX timestamp в часовом поясе UTC.
Перемотка
Во Flussonic Media Server есть специальный плейлист со "скользящим окном", которое позволяет перематывать или ставить на паузу потоки на несколько часов. Это комбинация плейлистов DVR и прямой трансляции.
Пример для HLS:
http://FLUSSONIC-IP:PORT/STREAM_NAME/rewind-7200.m3u8
7200 — продолжительность манифеста HLS в секундах, так что ваши клиенты смогут ставить поток на паузу или перематывать его к началу телевизионного шоу без необходимости создания catchup URL-адресов.
В плеере OSMF перемотка выглядит следующим образом:
Просмотр со сдвигом по времени (таймшифт)
Если ваш поток записывается на сервере с помощью DVR, вы можете проиграть записанный поток со сдвигом по времени. Это может быть полезно, например, для телевизионного вещания в разных часовых поясах, чтобы люди в другом часовом поясе смотрели утренние передачи утром, а не поздно вечером.
Таймшифт с относительным временем
К архиву можно обратиться как к обычному источнику, но со смещением во времени.
Пример для HLS:
http://FLUSSONIC-IP:PORT/STREAM_NAME/timeshift_rel-3600.m3u8
Важно отметить, что лучше использовать отдельный тип источника timeshift
, описанный ниже.
Таймшифт с абсолютным временем
Вы можете проиграть записанный поток по HLS, начиная с указанного момента времени. Это может быть полезно для старых приставок и для демонстрации записанных передач по расписанию.
В этом случае часть архива можно получить не одним фрагментом, а в режиме потоковой передачи, как если бы выполнялся просмотр в прямом эфире.
Пример для потока MPEG-TS с началом в 1652249647:
http://FLUSSONIC-IP:PORT/STREAM_NAME/timeshift_abs-1652249647.ts
Запуск таймшифт-потока с постоянной задержкой
Чтобы запустить дополнительный поток, который отстает от реального времени на постоянное время, следует воспользоваться дополнительным типом источников:
stream channel {
input fake://fake;
dvr /storage;
}
stream channel-1hour {
input 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-IP:PORT/STREAM_NAME/timeshift_abs-1430227800.m3u8?token=123
http://FLUSSONIC-IP:PORT/STREAM_NAME/timeshift_abs-1430227800.m3u8?token=124
http://FLUSSONIC-IP:PORT/STREAM_NAME/timeshift_abs-1430227800.m3u8?token=125
И так далее.
Протоколы для доступа к DVR
Ниже вы можете найти URL-адреса для всех поддерживаемых сценариев для доступа к DVR для различных протоколов со ссылками на подробное описание и примеры. Кроме того, для каждого протокола приведена ссылка на полную спецификацию OpenAPI.
HLS
HLS поддерживает все виды сценариев для доступа к DVR:
-
DVR catchup:
http://FLUSSONIC-IP:PORT/STREAM_NAME/archive-{from}-{depth}.m3u8
См. DVR catchup playback.
-
Проигрывание события:
http://FLUSSONIC-IP:PORT/STREAM_NAME/archive-{from}-now.m3u8
См. HLS Event playlist.
-
Перемотка:
http://FLUSSONIC-IP:PORT/STREAM_NAME/rewind-{ago}.m3u8
См. Перемотка плейлиста.
-
Абсолютный таймшифт:
http://FLUSSONIC-IP:PORT/STREAM_NAME/timeshift_abs-{from}.m3u8
-
Относительный таймшифт:
http://FLUSSONIC-IP:PORT/STREAM_NAME/timeshift_rel-{ago}.m3u8
Полная OpenAPI спецификация: Streaming API.
DASH
DASH поддерживает следующие сцеарии доступа к DVR:
-
DVR catchup:
http://FLUSSONIC-IP:PORT/STREAM_NAME/archive-{from}-{depth}.mpd
-
Проигрывание события:
http://FLUSSONIC-IP:PORT/STREAM_NAME/archive-{from}-now.mpd
-
Перемотка:
http://FLUSSONIC-IP:PORT/STREAM_NAME/rewind-{ago}.mpd
-
Абсолютный таймшифт:
http://FLUSSONIC-IP:PORT/STREAM_NAME/timeshift_abs-{from}.mpd
Полная OpenAPI спецификация: Streaming API.
HTTP MPEG-TS
HTTP MPEG-TS поддерживает только проигрывание DVR с таймшифтом.
-
Абсолютный таймшифт:
http://FLUSSONIC-IP:PORT/STREAM_NAME/timeshift_abs-{from}.ts
-
Относительный таймшифт:
http://FLUSSONIC-IP:PORT/STREAM_NAME/timeshift_rel-{ago}.ts
См. HTTP MPEG-TS.
Полная OpenAPI спецификация: Streaming API.
MSS
MSS поддерживает все виды сценариев доступа к DVR:
-
DVR catchup:
http://FLUSSONIC-IP:PORT/STREAM_NAME(archive={from}-{depth}).isml/manifest
-
Проигрывание события:
http://FLUSSONIC-IP:PORT/STREAM_NAME(archive={from}-now).isml/manifest
-
Перемотка:
http://FLUSSONIC-IP:PORT/STREAM_NAME(rewind={ago}).isml/manifest
-
Абсолютный таймшифт:
http://FLUSSONIC-IP:PORT/STREAM_NAME/(timeshift_abs={from}).isml/manifest
-
Относительный таймшифт:
http://FLUSSONIC-IP:PORT/STREAM_NAME(timeshift_rel={ago}).isml/manifest
См. Воспроизведение MSS.
Полная OpenAPI спецификация: Streaming API.