Медиа.маги Документация

Last updated

x265

x265 подключён между map/video и мультиплексором mp4.

1. Сводка

Программно кодирует видео H.265/HEVC через libx265. Даёт более высокую эффективность сжатия, чем H.264, при сопоставимом качестве — ценой большего объёма вычислений; хорошо подходит для лестниц ABR в UHD/4K и архивных мастеров.

2. Когда использовать

  • Готовите поставки HEVC для платформ и устройств, принимающих воспроизведение H.265.
  • Уменьшаете архивные или мезонинные мастеры при высоком качестве, когда потеря времени на кодирование приемлема.
  • Собираете лестницы ABR в UHD/4K, которые подаются на mp4 или в упаковщик HLS/DASH.
  • Перекодируете из любого источника, отличного от HEVC, — перед перекодированием входа HEVC см. Антипаттерны.

3. Входы

  • Videofiltergraph.VideoTransform. Видеопоток или граф фильтров для кодирования. Обязателен.

    Совместимые узлы выше по потоку:

    • map/video — выбирает видеопоток для выхода.
    • vf/crop — обрезает кадр до интересующей области.
    • vf/dar — задаёт метаданные соотношения сторон при отображении.
    • vf/deinterlace — убирает артефакты чересстрочности.
    • vf/fieldorder — меняет или задаёт флаг порядка полей.
    • vf/format — преобразует пиксельный формат или цветовые свойства.
    • vf/fps — меняет частоту кадров на выходе.
    • vf/hwupload — загружает кадры в GPU для аппаратной обработки.
    • vf/letterbox — дополняет кадр до целевого растра.
    • vf/overlay — накладывает графику на видео.
    • vf/scale — масштабирует видео до заданных размеров.

4. Выходы

  • Videocore.VideoTrack. Закодированная видеодорожка HEVC, готовая к мультиплексированию.

    Совместимые узлы ниже по потоку:

    • ccinject — вставляет скрытые субтитры или субтитры в выход.
    • mov — упаковывает потоки в контейнер QuickTime MOV.
    • mp4 — упаковывает потоки в файл MP4 (ISO‑BMFF).
    • mxf — упаковывает потоки в контейнер MXF.
    • ts — упаковывает потоки в транспортный поток MPEG-2.
    • dash — упаковывает выход для потоковой передачи MPEG-DASH.
    • hls3 — упаковывает выход для HLS с плейлистами v3.
    • hls5 — упаковывает выход для HLS с плейлистами v5.

5. Параметры

Форма «Настройки» узла x265.

Форма «Настройки» раскладывает поля в два столбца. Левый столбец группирует идентичность кодека и управление битрейтом; правый — GOP, опорные кадры и сигнализацию. Описаны в порядке следования в форме. Некоторые поля (Rate Factor, Max bitrate, Buffer size) появляются только после выбора соответствующего режима Rate Control — они описаны в подпункте Когда менять у соответствующей записи.

Левый столбец

  • Node Label (string, по умолчанию пусто)

    Произвольное имя, отображаемое на плитке узла на холсте.

    • Что задаёт. Подпись над плиткой; на кодирование не влияет.
    • Когда менять. Задавайте, когда в одном графе несколько узлов x265 (например, разные битрейты лестницы ABR), чтобы каждая копия была узнаваема с одного взгляда.
  • H265 Codec Profile (enum, по умолчанию "main")

    Профиль HEVC, записываемый в битовый поток.

    • Что задаёт. Набор возможностей декодера, нужных для воспроизведения выхода. main принуждает к 8-битной цветности 4:2:0; main10 допускает 10-битные пиксельные форматы для большей точности и HDR.
    • Когда менять. Используйте main для SDR-поставок 8 бит ради максимальной совместимости с устройствами. Переходите на main10 для HDR-мастеров (PQ/HLG), 10-битных конвейеров градации и любого процесса, питаемого 10-битным фильтром выше по потоку (yuv420p10le).
    • Допустимые значения. main, main10.
    • Обязательно. да.
  • Preset (enum, по умолчанию "medium")

    Компромисс «скорость/качество», поставляемый libx265.

    • Что задаёт. Набор внутренних параметров кодера; более медленные пресеты делают больше анализа и дают меньший файл при том же качестве.
    • Когда менять. Переходите на fast/veryfast, когда ограничен ЦПУ или кодирование идёт в реальном времени; на slow/slower/veryslow — для архивных мастеров, где лишнее время кодера некритично. Пресеты HEVC медленнее эквивалентов H.264 — если важна пропускная способность, опустите на ступень относительно сопоставимого кодирования x264.
    • Допустимые значения. ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo.
    • Обязательно. да.
  • Codec Level (enum, по умолчанию 51, показан как Auto)

    Флаг тира/уровня HEVC, записываемый в битовый поток.

    • Что задаёт. Бюджет декодера, который должен поддерживать плеер (разрешение, частота кадров, потолок битрейта, размер DPB).
    • Когда менять. Оставляйте на Auto (51, Level 5.1) для общего выхода UHD/4K; понижайте до 41 (Level 4.1), когда целевое устройство тянет HEVC только до 1080p; повышайте для 8K. Низкие уровни ограничивают размер кадра и битрейт, поэтому слишком малое значение отвергнет выбранное разрешение.
    • Допустимые значения. 1, 11, 12, 13, 2, 21, 22, 3, 31, 32, 4, 41, 42, 5, 51.
    • Обязательно. нет.
  • Rate Control (enum, по умолчанию "abr")

    Выбирает стратегию битрейта и то, какие условные поля появляются.

    • Что задаёт. Стратегию битрейта кодера: ABR держит средний битрейт, CRF держит постоянное воспринимаемое качество, CBR держит битрейт ровным.
    • Когда менять. Выбирайте abr для предсказуемого размера файла, crf — для VOD, где качество важнее размера, и cbr — для вещания или доставки с фиксированной полосой. Смена режима открывает соответствующие поля ниже: crf показывает Rate Factor; abr и cbr показывают Bitrate, а Max bitrate и Buffer size доступны для ограничения VBV.
    • Допустимые значения. abr, crf, cbr.
    • Обязательно. да.
  • Rate Factor (number 0–51, без значения по умолчанию; только CRF)

    Значение постоянного коэффициента качества.

    • Что задаёт. Цель по воспринимаемому качеству для кодера. Меньшие числа дают выше качество и больший файл; шкала идёт от 0 (без потерь) до 51 (худшее).
    • Когда менять. Типичные значения HEVC лежат в диапазоне 20–28: 22 — распространённая точка качественного мастера, 28 — поставка меньшего размера. Тот же Rate Factor на HEVC даёт заметно меньший файл, чем эквивалентный CRF на H.264.
  • Bitrate (number кбит/с, без значения по умолчанию)

    Целевой битрейт видео.

    • Что задаёт. Средний (ABR) или постоянный (CBR) выходной битрейт.
    • Когда менять. Задавайте всегда, когда Rate Control — abr или cbr. Типичные значения HEVC примерно вдвое ниже эквивалента H.264 при том же качестве: 1500–2500 кбит/с для 720p, 3000–5000 кбит/с для 1080p, 8000+ кбит/с для UHD.
    • Обязательно. да, когда Rate Control — abr или cbr.
  • Max bitrate (number кбит/с, без значения по умолчанию; только ABR/CRF)

    Верхняя граница VBV.

    • Что задаёт. Пиковый битрейт, который кодер вправе выдать.
    • Когда менять. Задавайте, когда у тракта доставки есть потолок полосы — чанки HLS, аппаратные декодеры, спутниковые аплинки. Применяйте в паре с Buffer size.
  • Buffer size (number кбит/с, без значения по умолчанию; только ABR/CRF)

    Размер буфера VBV.

    • Что задаёт. Размер виртуального буфера декодера, который кодер соблюдает при выдерживании Max bitrate.
    • Когда менять. Приводите в соответствие буферу, заданному целевым декодером. Частая отправная точка — Buffer size, равный Max bitrate (буфер на одну секунду); бо́льшие буферы сглаживают качество ценой задержки декодера. Задавайте всегда, когда задан Max bitrate, — неограниченный VBV сводит ограничение на нет.
  • Two Pass (boolean, по умолчанию false)

    Включает проход сбора статистики перед финальным кодированием.

    • Что задаёт. Делает ли libx265 проход анализа для измерения сложности сцен перед финальным кодированием.
    • Когда менять. Включайте для кодирования в ABR, когда важны точность битрейта и качество; время кодирования при этом примерно удваивается. Выключайте для CRF (у него нет цели по битрейту) и для прямых эфиров.
  • Tune (enum, по умолчанию пусто)

    Подстройки под тип контента поверх выбранного Preset.

    • Что задаёт. Корректирует психовизуальные настройки и матрицы квантования под известный тип контента.
    • Когда менять. grain — чтобы сохранить зерно плёнки, а не дать кодеру его сгладить; zerolatency — для прямых трансляций; fastdecode — для маломощных декодеров; psnr/ssim — только при настройке под объективные бенчмарки. Оставляйте пустым, когда ничего не подходит.
    • Допустимые значения. пусто, psnr, ssim, grain, zerolatency, fastdecode.
  • Scene Detection (number, без значения по умолчанию)

    Порог вставки дополнительного ключевого кадра на склейках сцен.

    • Что задаёт. Чувствительность детектора смены сцен в libx265. Большие числа означают, что для вставки ключевого кадра IDR кодеру нужна более резкая склейка.
    • Когда менять. Оставляйте пустым для поведения по умолчанию. Повышайте для материала с частыми кроссфейдами (концерты, клипы), чтобы кодер перестал принимать смену освещения за склейку; ставьте 0, чтобы полностью отключить ключевые кадры на склейках, чего иногда требуют вещательные и HLS-конвейеры со строго периодическим GOP.
  • Advanced options (array, по умолчанию [])

    Произвольная передача пар «ключ/значение» в libx265.

    • Что задаёт. Список «сырых» имён и значений параметров libx265, которые без изменений передаются кодеру; редактируется в отдельном окне.
    • Когда менять. Только когда настройка не вынесена в отдельное поле — типичные записи: psy-rd, psy-rdoq, limit-modes, rc-lookahead, hdr10-opt или поля HDR-сигнализации, такие как master-display и max-cll.

Правый столбец

  • B-Frames (number, по умолчанию 4)

    Максимум подряд идущих B-кадров.

    • Что задаёт. Предел числа двунаправленно предсказанных кадров, которые libx265 может разместить между опорными кадрами.
    • Когда менять. 3 или 4 — хорошие значения по умолчанию. Ставьте 0 для прямого эфира в режиме zerolatency (B-кадры добавляют задержку). Большие значения (до 16) незначительно улучшают сжатие ценой сложности декодера — большинство бытовых декодеров HEVC принимают до 4.
  • Reference Frames (number, по умолчанию 3)

    Размер DPB.

    • Что задаёт. Сколько ранее декодированных кадров P- или B-кадр может использовать как опорные для предсказания движения.
    • Когда менять. 34 — практичный оптимум для большинства поставок HEVC. Большие значения дают незначительный выигрыш на материале с интенсивным движением и анимации; очень высокие значения ограничены выбранным Codec Level.
  • Key Interval (number кадры, по умолчанию 250)

    Максимальная длина GOP.

    • Что задаёт. Самую длинную серию кадров, которую libx265 выдаёт перед принудительным ключевым кадром IDR.
    • Когда менять. Для стриминга задавайте небольшое кратное частоты кадров (например, 50 при 25 fps для 2-секундных сегментов), чтобы ритм ключевых кадров совпадал с границей чанка сегментатора. Значение 250 по умолчанию подходит для VOD-архивов (10-секундные GOP при 25 fps).
  • Min Key Interval (number кадры, без значения по умолчанию)

    Минимальное расстояние между кадрами IDR.

    • Что задаёт. Не даёт libx265 ставить два IDR слишком близко, когда обнаружение сцен срабатывает многократно.
    • Когда менять. Повышайте для материала с частыми склейками (клипы, спортивные нарезки), чтобы «мелькание» не порождало очень короткие GOP. Частая пара — Min Key Interval, равный числу кадров в одной секунде.
  • Open GOP (boolean, по умолчанию true)

    Разрешает B-кадрам ссылаться через границы ключевых кадров.

    • Что задаёт. Будет ли GOP «открытым» (B-кадры перед I-кадром могут ссылаться на предыдущий GOP) или «закрытым».
    • Когда менять. Оставляйте включённым ради небольшого выигрыша в сжатии в конвейерах VOD, допускающих открытые GOP. Выключайте для целей HLS/DASH и вещания — большинство сегментаторов и систем вставки рекламы требуют закрытых GOP на каждой границе сегмента.
  • Color Space (enum, по умолчанию пусто)

    Флаг матричных коэффициентов в битовом потоке.

    • Что задаёт. Тег цветовой матрицы, по которому плеер переводит YCbCr в RGB; сами пиксели не преобразуются.
    • Когда менять. Приводите в соответствие источнику: bt709 — для HD, smpte170m — для SD, bt2020nc — для UHD/HDR. Оставляйте пустым, чтобы унаследовать значение из входной цепочки фильтров.
    • Допустимые значения. пусто, bt709, fcc, bt470bg, smpte170m, smpte240m, GBR, YCgCo, bt2020nc, bt2020c, smpte2085, chroma-derived-nc, chroma-derived-c, ICtCp.
  • Color Transfer (enum, по умолчанию пусто)

    Флаг характеристик передачи (гамма-кривая).

    • Что задаёт. Тег OETF/EOTF, записываемый в битовый поток; пиксели не изменяются.
    • Когда менять. bt709 — для SDR HD, smpte170m — для SDR SD, smpte2084 — для PQ HDR, arib-std-b67 — для HLG HDR. Задавайте, когда входная цепочка фильтров применила известную передачу.
    • Допустимые значения. пусто, bt709, reserved, bt470m, bt470bg, smpte170m, smpte240m, linear, log100, log316, iec61966-2-4, bt1361e, iec61966-2-1, bt2020-10, bt2020-12, smpte2084, smpte428, arib-std-b67.
  • Color Primaries (enum, по умолчанию пусто)

    Флаг основных цветов (primaries).

    • Что задаёт. Координаты цветности закодированного видео, по которым цветоуправляемые плееры точно его отображают.
    • Когда менять. bt709 — для HD, smpte170m — для SD, bt2020 — для UHD/HDR. Оставляйте пустым, когда источник уже корректно размечен выше по потоку.
    • Допустимые значения. пусто, bt709, bt470m, bt470bg, smpte170m, smpte240m, film, bt2020, smpte428, smpte431, smpte432.
  • B-Adapt (enum, по умолчанию пусто)

    Алгоритм выбора расстановки B-кадров.

    • Что задаёт. Как libx265 решает, куда ставить B-кадры: быстрой эвристикой или полным RD-анализом.
    • Когда менять. Оставляйте пустым для значения кодера по умолчанию. Выбирайте более быстрый алгоритм на очень быстрых пресетах, если критична скорость; более медленный (RD-оптимальный) — на медленных пресетах, когда нужно выжать последнее качество при заданном битрейте.
  • B-Pyramid (boolean, по умолчанию true)

    Могут ли B-кадры ссылаться на другие B-кадры.

    • Что задаёт. Могут ли отдельные B-кадры использоваться опорными для других B-кадров, улучшая сжатие.
    • Когда менять. Оставляйте включённым для стриминга и VOD. Отключайте только для старого аппаратного декодера, не поддерживающего B-пирамиду.
  • Video Format (enum, по умолчанию пусто)

    Флаг исходного формата в VUI.

    • Что задаёт. Тег метаданных, описывающий исходный видеоформат (NTSC, PAL, компонентный, MAC и т. п.); декодеры используют его только справочно.
    • Когда менять. Оставляйте пустым, если только проверка соответствия стандарту ниже по потоку не требует конкретного тега (редко, в основном вещательные процессы).

Соответствие JSON-ключей и названий полей

JSON-ключ Название поля
profile H265 Codec Profile
level Codec Level
rc Rate Control
crf Rate Factor
maxrate Max bitrate
bufsize Buffer size
2pass Two Pass
bf B-Frames
refs Reference Frames
gop Key Interval
gop_min Min Key Interval
gop_open Open GOP
color_space Color Space
color_transfer Color Transfer
color_prim Color Primaries
opts Advanced options

6. Пример

Архив HEVC на холсте

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

7. Где используется

  • HEVC — перекодирует SD-мастер в H.265 MP4 1024×576 со стереозвуком AAC на 1,6 Мбит/с.

8. Антипаттерны

  • Перекодирование входа HEVC. Когда источник уже HEVC, перекодирование тратит много ЦПУ и накапливает артефакты сжатия. Используйте copy, когда преобразование не нужно, или меняйте только контейнер.
  • Сочетание CRF с ограничением Bitrate без Buffer size. Задание Max bitrate рядом с Rate Factor без соответствующего Buffer size оставляет кодеру свободу долго превышать цель; тогда ограничение либо не действует, либо обедняет буфер декодера. Задавайте Buffer size всегда при ограничении.
  • Open GOP на входе HLS/DASH. Большинство сегментаторов требуют закрытых GOP на границах сегментов. У x265 значение Open GOP включено по умолчанию — выключайте его для выходов адаптивного стриминга.
  • Неверный уровень кодека для выбранного разрешения. Уровень, слишком низкий для закодированного разрешения и битрейта, не проходит проверки соответствия на строгих плеерах. Оставляйте Codec Level на Auto, если только спецификация поставки не требует фиксированного значения.

9. Заметки

  • Воспроизведение HEVC не универсально: проверяйте поддержку устройствами перед поставкой потребительской аудитории и проверяйте лицензионные ограничения на коммерческое распространение HEVC.
  • Для HDR-мастеринга используйте H265 Codec Profile main10 и задайте флаги цветовой сигнализации (Color Space, Color Transfer, Color Primaries) под мастер; метаданные HDR, такие как master-display и max-cll, заносятся в Advanced options.
Медиа.маги Документация