HLSEncodingStorage

Лестница адаптивного битрейта: от 360p до 4K и место на диске

Как адаптивный стриминг выбирает качество, какие ступени и битрейты реально использует конвертер UFOLOAD и сколько места занимает час видео на каждой ступени.

Лестница адаптивного битрейта — это набор версий видео, из которых выбирает стриминговый плеер. У каждой ступени есть разрешение и битрейт; плеер начинает с одной из них, следит, как быстро скачиваются сегменты, и переходит выше или ниже, когда меняется скорость соединения. Если лестница составлена правильно, и зритель в поезде, и зритель перед 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.

Ступени конвертера UFOLOAD (H.264 High profile, AAC стерео)
СтупеньКадр при 16:9Предел видеоЦелевое качество (CRF)ЗвукПиковый объём за час
2160p3840x216016 Мбит/с20192 кбит/с6,79 ГиБ
1080p1920x10805 Мбит/с22160 кбит/с2,16 ГиБ
720p1280x7202,8 Мбит/с23128 кбит/с1,23 ГиБ
360p640x3600,8 Мбит/с2664 кбит/с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, 360p10,54 ГиБ
Full HD (1080p)1080p, 720p, 360p3,75 ГиБ
HD (720p)720p, 360p1,59 ГиБ
Ниже 360pОдна версия в размере исходникаЗависит от исходника

Конкретный пример: 100 часов материала в Full HD дают не больше примерно 375 ГиБ версий. Если ограничить верхнюю ступень 720p, те же сто часов займут не больше примерно 159 ГиБ — меньше половины. Основную часть счёта даёт верхняя ступень: отказ от 4K в библиотеке из 4K-исходников убирает примерно две трети её объёма. Учитывает ли хостинг эти версии в квоте хранилища — отдельный вопрос, он разобран в статье сколько стоит видеохостинг; в UFOLOAD квота считается по размеру загруженных вами файлов.

Настройка лестницы в студии кодирования

Соглашаться с настройками по умолчанию не обязательно. В студии кодирования в кабинете есть три настройки, которые меняют количество хранимых ступеней:

  • Максимальное разрешение. Видео никогда не кодируются выше этого значения. Разрешения выше потолка вашего тарифа заблокированы.
  • Минимальное качество. Выберите 360p, 720p или 1080p в качестве нижней ступени. Если поднять её, маленькие ступени исчезнут — это экономит диск и время кодирования, но зрители со слабым соединением теряют запасной вариант, поэтому оставьте 360p, если среди вашей аудитории есть мобильные пользователи.
  • Быстрые пресеты. Максимальное качество, баланс, экономия хранилища (до 720p и только нужные качества) и мгновенная публикация для подходящих аккаунтов.

Изменения применяются к новым загрузкам. Чтобы применить их к видео, которые уже есть в библиотеке, используйте перекодирование: оно обрабатывает самые новые видео пакетами с паузой между запусками, а видео остаются доступными для просмотра, пока перекодируются.

Если вы строите свою лестницу

  • Держите шаг между соседними ступенями примерно в 1,5–2 раза по битрейту. Более мелкие шаги добавляют объём без видимой пользы, более крупные делают скачки качества заметными.
  • Начинайте достаточно низко для самых медленных реальных зрителей. Ступень, которую никто не вытягивает, бесполезна; отсутствие нижней ступени — это крутящийся индикатор загрузки.
  • Выравнивайте ключевые кадры по длине сегмента и указывайте в плейлисте пиковый битрейт.
  • Не делайте апскейл. Ограничивайте каждую ступень высотой исходника.
  • Через месяц посмотрите, какие ступени реально используют зрители, и уберите те, что никогда не воспроизводятся.

Весь конвейер, от форматов загрузки до доставки, описан на странице возможностей; лимиты и цены тарифов — в разделе тарифы. Если вы ещё сравниваете варианты, в чек-листе выбора видеохостинга есть вопросы о кодировании и качестве, которые стоит задать любому провайдеру.

Попробуйте с бесплатным аккаунтом

Загрузите видео и получите HLS-плеер и API-ключ за несколько минут. Лимиты тарифов указаны на странице тарифов.