Skip to content

Проигрывание архива

Записанный архив доступен через те же протоколы, что и лайв: HLS и DASH. Дополнительно есть API для запроса записанных диапазонов и превью.

Проигрывание архива работает только у потоков с включенной записью (dvr) — иначе запрос отклоняется с понятной ошибкой.

Rewind — отмотка назад

Плейлист, отмотанный на N секунд назад от текущего момента:

http://server/streaming/v/<stream>/rewind/<секунд>/index.m3u8

Например, rewind/3600/ — часовой timeshift. Rewind бесшовно склеивает архив с живым краем: плейлист начинается в архиве и продолжается лайвом без дублей и дырок на стыке, LL-HLS (blocking reload, дельта-обновления) продолжает работать. Дырки в записи оформляются стандартным EXT-X-DISCONTINUITY.

Проигрывание по абсолютному времени

Интервал архива задается параметрами from/to (UTC в миллисекундах) на обычных URL:

http://server/streaming/v/<stream>/index.m3u8?from=<utc_ms>&to=<utc_ms>
http://server/streaming/v/<stream>/Manifest.mpd?from=<utc_ms>&to=<utc_ms>

HLS-плейлист архива — закрытый VOD-плейлист. У DASH дырки записи оформляются периодами, а таймлайн выбирается параметром ?timeline=compact|wallclock — см. DASH.

Какие диапазоны записаны

Записанные интервалы отдает HTTP API:

http://server/streaming/dvr-range/<stream>
http://server/streaming/dvr-ranges/<stream>

Note

TODO: формат ответов dvr-range / dvr-ranges.

Превью кадров архива

  • JPEG-кадр из дорожки скриншотов: http://server/streaming/dvr-preview-jpeg/<stream>/<track>/image/<utc_ms>.jpg
  • MP4-фрагмент момента архива: http://server/streaming/dvr-preview-mp4/<stream>/<utc_ms> — короткий фрагмент от ключевого кадра; для превью сервер сам выбирает дорожку наименьшего разрешения.

Что дальше