Термин
Buffer-based ABR
ABR-алгоритм выбирает rendition в зависимости от текущего уровня буфера плеера, а не от измеренной пропускной способности. Чем больше буфер – тем выше rendition; чем меньше – тем ниже.
Buffer-основанный ABR предложили Yin, Jindal и соавторы (Netflix paper, 2014) как альтернативу оценке пропускной способности. Основная идея: уровень буфера – это несмещённый индикатор того, идёт ли загрузка быстрее, чем воспроизведение. Если буфер растёт – есть запас для повышения качества; если падает – нужно снижать. Оценивать пропускную способность вообще не требуется – сам буфер выступает в роли интегрирующего сенсора.
Классический buffer-based-алгоритм задаёт кусочно-определённую функцию от уровня буфера к выбираемому rendition: ниже 10 секунд – самый низкий, между 10 и 30 – линейный рост, выше 30 – самый высокий. Варианты отличаются лишь порогами и формой кривой, но структура остаётся прежней. Главное преимущество buffer-based ABR – он избегает шума при оценке пропускной способности в сетях с bursty-трафиком: игнорирует кратковременные провалы полосы и реагирует только тогда, когда буфер действительно начинает опустошаться.
В продакшене большинство ABR-алгоритмов – гибридные. BOLA (Buffer Occupancy based Lyapunov Algorithm, 2016) – это buffer-based-алгоритм с теоретическими границами оптимальности, используемый в dash.js. ABR-алгоритм Netflix в продакшене сочетает buffer-based-логику с throughput-ориентированными ограничениями безопасности. Shaka и hls.js по умолчанию также используют гибридные подходы. Чистые throughput- или buffer-based-алгоритмы больше подходят для учебных целей, чем для реальных продакшен-систем.
Считаете параметры для своего продукта?
Поможем собрать энкодер-леддер и посчитать стоимость доставки – до старта разработки.