Лестница адаптивного битрейта — это набор версий видео, из которых выбирает стриминговый плеер. У каждой ступени есть разрешение и битрейт; плеер начинает с одной из них, следит, как быстро скачиваются сегменты, и переходит выше или ниже, когда меняется скорость соединения. Если лестница составлена правильно, и зритель в поезде, и зритель перед 4K-телевизором получают плавное воспроизведение из одной загрузки. Если нет — вы либо тратите диск и трафик на ступени, которыми никто не пользуется, либо оставляете зрителей с медленным интернетом наедине с крутящимся индикатором загрузки.
В этой статье объясняется, как устроена лестница, а затем показана реальная лестница, которую строит конвертер UFOLOAD, — с битрейтами, взятыми из самого конвертера, — и сколько места на диске занимает час видео на каждой ступени.
Как плеер выбирает ступень
Мастер-плейлист потока HLS перечисляет все ступени с тремя важными атрибутами: BANDWIDTH, RESOLUTION и CODECS. Плеер измеряет скорость загрузки по последним нескольким сегментам и выбирает самую высокую ступень, у которой BANDWIDTH с запасом укладывается в эту скорость. Здесь стоит знать две детали.
Во-первых, BANDWIDTH — это пиковое значение, а не среднее. Если плейлист его занижает, плеер выбирает ступень, которую соединение не вытягивает, и воспроизведение останавливается; поэтому наш конвертер записывает пиковое значение и никогда не пишет ноль. Во-вторых, переключение происходит на границах сегментов. Наши сегменты длятся четыре секунды, и кодировщик ставит ключевой кадр в начало каждого из них, так что плеер переходит между версиями без сбоев. Короткий сегмент быстрее реагирует, но добавляет запросов; четыре секунды — распространённый компромисс.
Если вы хотите разместить такой поток на своей странице, в статье как встроить HLS-видео показаны варианты с iframe и hls.js.
Лестница UFOLOAD
У конвертера четыре ступени: 2160p (4K), 1080p, 720p и 360p. Ступень создаётся, только если исходник не ниже её по высоте: апскейл не добавляет деталей, а лишь увеличивает объём и время кодирования. Из исходника 720p получаются 720p и 360p; исходник меньше 360p даёт одну версию в собственном размере, чтобы у каждого файла была хотя бы одна воспроизводимая версия. Ширина следует соотношению сторон исходника и округляется до чётного числа, потому что H.264 с цветовой субдискретизацией 4:2:0 не кодирует нечётные размеры. Ширина ниже указана для 16:9.
| Ступень | Кадр при 16:9 | Предел видео | Целевое качество (CRF) | Звук | Пиковый объём за час |
|---|---|---|---|---|---|
| 2160p | 3840x2160 | 16 Мбит/с | 20 | 192 кбит/с | 6,79 ГиБ |
| 1080p | 1920x1080 | 5 Мбит/с | 22 | 160 кбит/с | 2,16 ГиБ |
| 720p | 1280x720 | 2,8 Мбит/с | 23 | 128 кбит/с | 1,23 ГиБ |
| 360p | 640x360 | 0,8 Мбит/с | 26 | 64 кбит/с | 0,36 ГиБ |
По умолчанию используется пресет medium, а битрейты ступеней подобраны для обычного контента в H.264. Ступень 1080p ограничена 5 Мбит/с: этого хватает для чистой картинки, а выше файл растёт без заметного выигрыша. В 4K в четыре раза больше пикселей, чем в 1080p, поэтому его предел — 16 Мбит/с, больше чем втрое выше, чтобы в сложных сценах не появлялись блоки.
Конвертер не делает 480p и 240p. Меньше ступеней — меньше места на диске и быстрее кодирование, а между 360p и 720p у плеера остаётся разумный шаг для медленного мобильного интернета. Какие ступени вы получите на деле, зависит и от тарифа: 360p и 720p — базовые, а верхняя ступень ограничена потолком тарифа, указанным на странице тарифов. На тарифе Free у видео одно качество.
CRF и предел битрейта: почему размеры файлов — это верхняя граница
Кодировщик не стремится к фиксированному битрейту. Он стремится к постоянному качеству, которое задаётся CRF (constant rate factor): чем меньше число, тем лучше картинка и больше файл. Статичному видео с говорящей головой нужно очень мало данных, чтобы достичь цели, динамичной сцене — много. Чтобы отдельная сцена не забила медленное соединение, у каждой ступени есть ещё maxrate, равный битрейту из таблицы, и буфер вдвое больше. В результате поток обычно ниже предела и никогда не превышает его надолго.
Поэтому в этой статье указаны пиковые объёмы. Лекция или запись экрана обычно получаются заметно меньше. Разговорный контент может занимать лишь долю предела, а спорт с быстрым движением или шумная съёмка приближаются к нему. Оценивая объём библиотеки, берите пиковые значения для бюджета с запасом и собственное измеренное среднее — для реалистичного.
Профиль качества в студии кодирования смещает этот баланс. Быстрый профиль использует более быстрый пресет x264 и готовит видео раньше ценой чуть больших файлов; профиль «качество» использует более медленный пресет и меньший CRF ради более чистой картинки и доступен на платных тарифах. Сбалансированный профиль по умолчанию находится посередине.
Сколько места на диске занимает лестница
Час видео на пике каждой ступени весит 6,79 ГиБ в 2160p, 2,16 ГиБ в 1080p, 1,23 ГиБ в 720p и 0,36 ГиБ в 360p. Полная лестница — это сумма ступеней, которые допускает исходник, и каждая ступень хранится на диске отдельным файлом:
| Разрешение исходника | Создаваемые ступени | Пиковый объём на час видео |
|---|---|---|
| 4K (2160p) | 2160p, 1080p, 720p, 360p | 10,54 ГиБ |
| Full HD (1080p) | 1080p, 720p, 360p | 3,75 ГиБ |
| HD (720p) | 720p, 360p | 1,59 ГиБ |
| Ниже 360p | Одна версия в размере исходника | Зависит от исходника |
Конкретный пример: 100 часов материала в Full HD дают не больше примерно 375 ГиБ версий. Если ограничить верхнюю ступень 720p, те же сто часов займут не больше примерно 159 ГиБ — меньше половины. Основную часть счёта даёт верхняя ступень: отказ от 4K в библиотеке из 4K-исходников убирает примерно две трети её объёма. Учитывает ли хостинг эти версии в квоте хранилища — отдельный вопрос, он разобран в статье сколько стоит видеохостинг; в UFOLOAD квота считается по размеру загруженных вами файлов.
Настройка лестницы в студии кодирования
Соглашаться с настройками по умолчанию не обязательно. В студии кодирования в кабинете есть три настройки, которые меняют количество хранимых ступеней:
- Максимальное разрешение. Видео никогда не кодируются выше этого значения. Разрешения выше потолка вашего тарифа заблокированы.
- Минимальное качество. Выберите 360p, 720p или 1080p в качестве нижней ступени. Если поднять её, маленькие ступени исчезнут — это экономит диск и время кодирования, но зрители со слабым соединением теряют запасной вариант, поэтому оставьте 360p, если среди вашей аудитории есть мобильные пользователи.
- Быстрые пресеты. Максимальное качество, баланс, экономия хранилища (до 720p и только нужные качества) и мгновенная публикация для подходящих аккаунтов.
Изменения применяются к новым загрузкам. Чтобы применить их к видео, которые уже есть в библиотеке, используйте перекодирование: оно обрабатывает самые новые видео пакетами с паузой между запусками, а видео остаются доступными для просмотра, пока перекодируются.
Если вы строите свою лестницу
- Держите шаг между соседними ступенями примерно в 1,5–2 раза по битрейту. Более мелкие шаги добавляют объём без видимой пользы, более крупные делают скачки качества заметными.
- Начинайте достаточно низко для самых медленных реальных зрителей. Ступень, которую никто не вытягивает, бесполезна; отсутствие нижней ступени — это крутящийся индикатор загрузки.
- Выравнивайте ключевые кадры по длине сегмента и указывайте в плейлисте пиковый битрейт.
- Не делайте апскейл. Ограничивайте каждую ступень высотой исходника.
- Через месяц посмотрите, какие ступени реально используют зрители, и уберите те, что никогда не воспроизводятся.
Весь конвейер, от форматов загрузки до доставки, описан на странице возможностей; лимиты и цены тарифов — в разделе тарифы. Если вы ещё сравниваете варианты, в чек-листе выбора видеохостинга есть вопросы о кодировании и качестве, которые стоит задать любому провайдеру.
Загрузите видео и получите HLS-плеер и API-ключ за несколько минут. Лимиты тарифов указаны на странице тарифов.