Как клиент Adaptive Bitrate (ABR) отслеживает сегменты? - PullRequest
0 голосов
/ 24 января 2019

Когда клиент ABR переключается с одного битрейта на другой, как он узнает, какой именно следующий сегмент следует выбрать, если имена сегментов не указывают на какой-либо порядок?например, скажем, сегменты 1 и 2 были прочитаны для битрейта x, и теперь клиент решает, что сегмент 3 должен быть прочитан из дочернего манифеста для битрейта y, как он узнает, какую запись нужно прочитать в дочернем манифесте, чтобы получить URLсегмента 3 с битрейтом y?

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Как я знаю из исходного кода в hls.js и exoplayer (HlsMediaSource), клиент выбирает следующий фрагмент на основе времени окончания текущего буфера, а затем находит сегмент, который содержит время окончания в m3u8, с помощью бинарного поиска.

0 голосов
/ 24 января 2019

Каждая реализация отличается, но часто алгоритм ABR просто оценивает битрейт, манифест имеет список сегментов на битрейт. Поскольку время (неизбежно) движется вперед, и следующий сегмент должен быть загружен, игрок выбирает следующий из списка с максимально возможной скоростью передачи битов, учитывая выходной сигнал ABR.

...