Проигрывание по HLS и LL-HLS¶
Любой поток Sapsan сразу доступен по HLS (fMP4/CMAF) без дополнительной настройки. Для лайва по умолчанию включен LL-HLS с частичными сегментами.
URL проигрывания¶
| Что | URL |
|---|---|
| Мастер-плейлист (все качества) | http://server/streaming/v/<stream>/index.m3u8 |
| Плейлист одной дорожки | http://server/streaming/v/<stream>/variant/<track>/index.m3u8 |
| Отмотка назад (rewind) | http://server/streaming/v/<stream>/rewind/<секунд-назад>/index.m3u8 |
| Архив по абсолютному времени | http://server/streaming/v/<stream>/index.m3u8?from=<utc_ms>&to=<utc_ms> |
В мастер-плейлисте: качества с RESOLUTION, FRAME-RATE и CODECS, аудио выносится в rendition-группы (EXT-X-MEDIA). Аудио G.711 (PCMA/PCMU) в HLS не отдается — такие потоки сначала транскодируйте в AAC.
LL-HLS¶
Для живых потоков Sapsan отдает полноценный LL-HLS (протокол версии 9):
- частичные сегменты
EXT-X-PARTна живом краю плейлиста иEXT-X-PRELOAD-HINTдля следующей части; - blocking playlist reload: клиентские параметры
_HLS_msnи_HLS_partдержат запрос, пока не появится запрошенный сегмент/часть; - дельта-обновления плейлиста:
_HLS_skip=YESсокращает плейлист тегомEXT-X-SKIP; EXT-X-RENDITION-REPORTдля быстрого переключения качеств;- параметры
PART-HOLD-BACK,CAN-SKIP-UNTIL,HOLD-BACKрассчитываются автоматически от длительностей сегмента и части.
Выключить LL-HLS для конкретного клиента можно параметром ?llhls=false — мастер-плейлист пробросит его во все variant-URL, и плеер получит классический HLS (версия 7).
Токены в плейлистах¶
Если проигрывание защищено токеном, ?token= автоматически дописывается во все вложенные URL плейлиста: варианты, init-сегменты, сегменты, части и preload-хинты. Плееру достаточно открыть мастер-плейлист с токеном.
Количество сегментов¶
Длина живого плейлиста задается параметром потока segments:
streams:
tv1:
inputs:
- udp: {host: 239.0.0.1, port: 5000}
segments: 6
Диагностика¶
В Sapsan встроен валидатор HLS-плейлистов: он оценивает ожидаемую задержку и указывает на проблемы конфигурации кодами вида LL-DISABLED, TARGETDURATION-INFLATED, PART-TARGET-LARGE, SPARSE-INDEPENDENT-PARTS (слишком длинный GOP для LL-HLS).
Note
TODO: как запускать валидатор (CLI/API).