Обычное поведение в прямом эфире заключается в том, что каждые x
секунд становится доступным новый сегмент, то есть добавляется в конце списка воспроизведения.
Итак, вы можете загрузить список воспроизведения один раз, а затем ждатьx
секунды и загрузите его снова.Если прямой эфир все еще выполняется, последний сегмент в списке воспроизведения должен был измениться (т. Е. Сместиться вверх).
Относительно того, как долго ждать: При начальной загрузке списка воспроизведения вы увидите тег EXT-X-TARGETDURATION
всписок воспроизведения, указывающий максимальную продолжительность сегмента.Поэтому, если мы подождем хотя бы одну целевую длительность, прежде чем перезагрузить, то должен быть добавлен хотя бы один новый сегмент.
Пример:
Начальная загрузка:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:8
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:8.0,
https://priv.example.com/0.ts
#EXTINF:8.0,
https://priv.example.com/1.ts
#EXTINF:8.0,
https://priv.example.com/2.ts
Подождите 8 секунд, следовательно #EXT-X-TARGETDURATION:8
Вторая загрузка:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:8
#EXT-X-MEDIA-SEQUENCE:1
#EXTINF:8.0,
https://priv.example.com/1.ts
#EXTINF:8.0,
https://priv.example.com/2.ts
#EXTINF:8.0,
https://priv.example.com/3.ts
Sidenote
Приведенный выше пример представляет собой живой поток со скользящим окном, то есть сегменты в верхней части списка воспроизведения выпадают, и EXT-X-MEDIA-SEQUENCE
увеличивается.В этом случае проверка, если EXT-X-MEDIA-SEQUENCE
изменений будет вариант.Однако, если в списке воспроизведения указано EXT-X-PLAYLIST-TYPE
из EVENT
, то ни один сегмент не выпадет вверху [1] EXT-X-MEDIA-SEQUENCE
не изменится.Однако метод проверки последнего сегмента работает в любом случае.
[1] https://tools.ietf.org/html/rfc8216#section-4.3.3.5
EDIT
Спецификация HLS дополнительно гласит:
Если список воспроизведения мультимедиа не содержит тег EXT-X-ENDLIST, сервер ДОЛЖЕН сделать доступной новую версию файла списка воспроизведения, которая содержит хотя бы один новый сегмент мультимедиа.Он ДОЛЖЕН быть сделан доступным относительно времени, когда была сделана доступной предыдущая версия файла списка воспроизведения: не ранее, чем половина целевой длительности после этого времени и не позднее, чем в 1,5 раза больше целевой продолжительности после этого времени.Это позволяет клиентам эффективно использовать сеть.
Так что на самом деле нам нужно подождать как минимум в 1,5 раза больше целевого времени, пока мы не перезагрузим.