Термин
Throughput-based ABR
ABR-алгоритм, выбирающий самый высокий rendition, чей битрейт меньше недавно измеренного throughput-а. Простейший и самый распространённый стиль ABR.
Throughput-based ABR оценивает доступную полосу по недавним временам загрузки сегментов и выбирает самый высокий rendition, помещающийся с запасом. Типичная формула: гармоническое среднее по последним N загрузкам сегментов (N около 5), умноженное на коэффициент безопасности (0.7–0.9), берём самый высокий rendition с битрейтом ниже. Когда приходит следующий сегмент, пересчитываем и при необходимости переключаемся.
Сильная сторона – простота: алгоритм легко понимается, легко инструментируется и даёт предсказуемое поведение. Когда полоса реально меняется, throughput-based ABR подстраивается за несколько сегментов. Слабая сторона – на bursty или переменных сетях (сотовая, Wi-Fi под нагрузкой) недавний throughput – плохой предиктор ближайшего, что ведёт к осцилляциям и лишним переключениям. Throughput-based-алгоритмы также склонны к агрессивным rate-step-ам – могут слишком охотно скакнуть с 720p на 1080p и обратно.
Throughput-based ABR – дефолт в hls.js, Shaka Player и большинстве старых плееров. Современные продакшен-деплои обычно навешивают дополнительные эвристики: минимальное dwell time на rendition (не переключаться чаще, чем раз в 10 секунд), buffer floor check (не повышать, если буфер ниже 5 секунд), startup boost (стартовать с низкого rendition и подняться). Эти доработки превращают учебный throughput-алгоритм в нечто приемлемое для реальных пользователей.
Считаете параметры для своего продукта?
Поможем собрать энкодер-леддер и посчитать стоимость доставки – до старта разработки.