Videojs, Как динамически обновлять плейлист m3u8

Я хочу добавить новые входящие фрагменты из бэкэнда в проигрыватель, который уже представляет собой «живой» плейлист m3u8.

Это существующий плейлист (уже настроен и воспроизводится)

#EXTM3U
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-TARGETDURATION:6
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PROGRAM-DATE-TIME:2018-10-19T16:39:07Z
#EXTINF:6.000,
56-06000.ts
#EXTINF:6.000,
56-06000.ts
#EXTINF:6.000,
56-06000.ts
#EXTINF:6.000,
56-06000.ts
#EXT-X-ENDLIST

Это обновленный плейлист, я хочу заменить старый плейлист (указанный ниже) следующим, но я не хочу перезагружать проигрыватель videojs с помощью команды (player.src(...))

#EXTM3U
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-TARGETDURATION:6
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PROGRAM-DATE-TIME:2018-10-19T16:39:07Z
#EXTINF:6.000,
56-06000.ts
#EXTINF:6.000,
56-06000.ts
#EXTINF:6.000,
56-06000.ts
#EXTINF:6.000,
56-06000.ts
....
....
many another chunks
....
....
#EXT-X-ENDLIST

Как я могу это сделать? Или, может быть, существует какой-либо другой хороший способ обновить плейлист?


person Yuriy Gyerts    schedule 18.10.2019    source источник


Ответы (1)


Измените тип плейлиста на EVENT и не пишите конечный тег. Затем плеер будет продолжать запрашивать обновленный плейлист. Для получения дополнительной информации, пожалуйста, прочитайте спецификацию. https://tools.ietf.org/html/rfc8216

person szatmary    schedule 18.10.2019
comment
Знаете ли вы, есть ли какая-либо библиотека Python (или любого другого языка), которая выполняет задание по обновлению плейлиста, у меня есть файл m3u8, однако мне кажется, что процедура запроса обновленного плейлиста на сервере мне не ясна. - person Luk Aron; 23.12.2020
comment
Изменение типа события на EVENT действительно заставляет videojs перезагружать файл манифеста, однако, если ваш сервер HLS представляет собой модуль nginx + rtmp, это также заставляет nginx сохранять фрагменты .ts, что делает это решение неактуальным для сценариев прямой трансляции. - person atyachin; 24.12.2020