x264

1. Сводка
Программно кодирует видео H.264/AVC через libx264. На холсте узел называется h.264 ЦПУ. Настраиваемые пресеты, профили, уровни и режимы управления битрейтом (ABR, CRF, CBR) закрывают весь спектр задач — от вещания до доставки в веб.
2. Когда использовать
- Готовите материалы H.264 для широкого распространения (веб, OTT, архив).
- Создаёте прокси- или превью-копии, где допустимо кодирование только на ЦПУ.
- Собираете многобитрейтные лестницы ABR, которые подаются на mp4 или в упаковщики HLS.
- Перекодируете из любого источника, отличного от H.264, — перед перекодированием входа H.264 см. Антипаттерны.
3. Входы
Video—filtergraph.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. Выходы
Video—core.VideoTrack. Закодированная видеодорожка H.264, готовая к мультиплексированию.Совместимые узлы ниже по потоку:
- ccinject — вставляет скрытые субтитры в выход.
- mov — упаковывает потоки в контейнер QuickTime MOV.
- mp4 — упаковывает потоки в файл MP4 (ISO‑BMFF).
- mxf — упаковывает потоки в контейнер MXF.
- ts — упаковывает потоки в транспортный поток MPEG-2.
- dash — упаковывает выход для потоковой передачи MPEG-DASH.
- hls3 — упаковывает выход для HLS с плейлистами v3.
- hls5 — упаковывает выход для HLS с плейлистами v5.
5. Параметры

Форма «Настройки» разбита на два столбца. Левый столбец задаёт идентичность кодека и управление битрейтом; правый — структуру GOP, опорные кадры и сигнальные флаги. Поля описаны в порядке их следования в форме. Названия полей сохранены так, как они написаны в форме.
Левый столбец
Node Label (
string, по умолчанию пусто)Произвольное имя, отображаемое на плитке узла на холсте.
- Что задаёт. Подпись над плиткой; на кодирование не влияет.
- Когда менять. Задавайте, когда в одном процессе несколько узлов h.264 ЦПУ (например, разные битрейты лестницы ABR), чтобы каждую копию было видно с одного взгляда.
H264 Codec Profile (
enum, по умолчанию"main")Профиль H.264. Жёстко задаёт набор возможностей, доступных кодеру, и перекрывает любую конфликтующую точечную настройку.
- Что задаёт. Набор возможностей декодера, нужных для воспроизведения выхода (энтропийный кодер, преобразование 8×8, формат цветности, битовая глубина).
- Когда менять. Выбирайте наименьший профиль, который принимают целевые
устройства:
baseline— для старых мобильных,main— для безопасного общего воспроизведения,high— для современного стриминга, аhigh10/high422/high444— для мастеринга и постпродакшена. - Допустимые значения.
baseline,main,high,high10,high422,high444. - Обязательно. да.
Preset (
enum, по умолчанию"medium")Компромисс «скорость/качество», поставляемый libx264.
- Что задаёт. Набор внутренних параметров кодера; более медленные пресеты делают больше анализа и дают меньший файл при том же качестве.
- Когда менять. Переходите на
fast/veryfast, когда ограничен ЦПУ или кодирование идёт в реальном времени; наslow/slower— для архивных мастеров, где лишнее время кодера некритично. - Допустимые значения.
ultrafast,superfast,veryfast,faster,fast,medium,slow,slower,veryslow,placebo. - Обязательно. да.
H264 Codec Level (
enum, по умолчанию41)Флаг уровня, записываемый в битовый поток.
- Что задаёт. Бюджет декодера, который должен поддерживать плеер (разрешение, частота кадров, потолок битрейта, размер DPB).
- Когда менять. Оставляйте
41(Level 4.1) для типичного выхода 1080p; повышайте до5/51для 4K и понижайте для старых или маломощных декодеров, заявляющих конкретный уровень. - Допустимые значения.
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— для вещания или доставки с фиксированной полосой (слот CDN, спутниковый канал). Переключение режима показывает соответствующие поля ниже. - Допустимые значения.
ABR,CRF,CBR. - Обязательно. да.
Rate Factor (
number, по умолчанию23; режим CRF)Целевой коэффициент качества для режима CRF.
- Что задаёт. Постоянное воспринимаемое качество, которое держит кодер: меньшее значение — выше качество и больше файл, большее — наоборот.
- Когда менять. Понижайте к
18, когда нужно почти визуально без потерь (мастеринг, сложный материал); повышайте к28, когда размер важнее, чем мелкие детали. Поле действует, только когда Rate Control =CRF. - Обязательно. да, когда Rate Control =
CRF.
Two Pass (
boolean, по умолчаниюfalse)Включает второй проход анализа.
- Что задаёт. Делает ли libx264 проход сбора статистики перед финальным кодированием, получая полное представление о сложности сцен.
- Когда менять. Включайте для кодирования в ABR, когда важны точность битрейта и качество; время кодирования при этом примерно удваивается. Выключайте для CRF (у него нет цели по битрейту) и для прямых эфиров.
- Обязательно. нет.
Tune (
enum, по умолчанию пусто)Подстройки под тип контента поверх выбранного Preset.
- Что задаёт. Корректирует психовизуальные настройки, деблокинг и матрицы квантования под известный тип контента.
- Когда менять.
film— для игрового видео,animation— для мультфильмов и CGI,grain— для сохранения зерна плёнки,stillimage— для слайд-шоу,fastdecode— для маломощных плееров,zerolatency— для прямых трансляций. Оставляйте пустым, когда ничего не подходит. - Допустимые значения. пусто,
film,animation,grain,stillimage,psnr,ssim,fastdecode,zerolatency. - Обязательно. нет.
Scene Detection (
boolean, по умолчаниюtrue)Адаптивная расстановка IDR на склейках сцен.
- Что задаёт. Может ли libx264 вставлять дополнительный ключевой кадр IDR при обнаружении смены сцены — в дополнение к ритму Key Interval.
- Когда менять. Оставляйте включённым для VOD: ключевые кадры на склейках улучшают точность перемотки и сжатие. Выключайте, когда сегментатор ниже по потоку требует строго периодический GOP (некоторые упаковщики HLS/DASH, вещательные мультиплексоры).
Advanced options (
array, по умолчанию[])Произвольная передача пар «ключ/значение» в libx264.
- Что задаёт. Список «сырых» имён и значений параметров libx264, которые без изменений передаются кодеру; редактируется в отдельном окне (кнопка Edit).
- Когда менять. Только когда настройка не вынесена в отдельное поле —
типичные записи:
rc-lookahead, порогscenecutили веса psy-rd для тонкой настройки. - Обязательно. нет.
Правый столбец
Key Interval (
number, кадры; без значения по умолчанию)Максимальная длина GOP.
- Что задаёт. Самую длинную серию кадров, которую libx264 выдаёт перед принудительным ключевым кадром IDR.
- Когда менять. Для стриминга задавайте небольшое кратное частоты кадров (например, 2× fps, то есть 50 при 25 fps), чтобы попасть в границы сегмента упаковщика. Для VOD более длинные GOP (10× fps) лучше сжимают, но замедляют перемотку.
- Обязательно. нет.
Min Key Interval (
number, кадры; без значения по умолчанию)Минимальное расстояние между кадрами IDR.
- Что задаёт. Не даёт libx264 ставить два IDR слишком близко, когда обнаружение сцен срабатывает многократно.
- Когда менять. Повышайте для материала с частыми склейками (клипы, спорт), чтобы «мелькание» не порождало очень короткие GOP.
- Обязательно. нет.
Open GOP (
boolean, по умолчаниюfalse)Разрешает B-кадрам ссылаться через границы ключевых кадров.
- Что задаёт. Будет ли GOP «открытым» (B-кадры перед I-кадром могут ссылаться на предыдущий GOP) или «закрытым».
- Когда менять. Включайте ради небольшого выигрыша в сжатии в конвейерах VOD, допускающих открытые GOP. Выключайте для целей HLS/DASH и вещания — большинство сегментаторов и систем вставки рекламы требуют закрытых GOP.
- Обязательно. нет.
B-Frames (
number, без значения по умолчанию; диапазон 0–16)Максимум подряд идущих B-кадров.
- Что задаёт. Предел числа двунаправленно предсказанных кадров, которые libx264 может разместить между опорными кадрами.
- Когда менять. Большие значения (3–8) улучшают сжатие для профилей
mainиhigh; ставьте0дляbaseline(где B-кадры запрещены) или для прямого эфира в режимеzerolatency. - Обязательно. нет.
Reference Frames (
number, без значения по умолчанию; диапазон 1–16)Размер DPB.
- Что задаёт. Сколько ранее декодированных кадров P- или B-кадр может использовать как опорные для предсказания движения.
- Когда менять. 4–6 — хорошее значение по умолчанию. Повышайте к 16 для анимации, захвата экрана и CGI, где помогает долговременная временная корреляция; понижайте для старых декодеров с ограниченным DPB. Выбранный H264 Codec Level в итоге ограничивает это значение сверху.
- Обязательно. нет.
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,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-Frame Decision (
enum, по умолчанию"normal")Алгоритм выбора расстановки B-кадров.
- Что задаёт. Как libx264 решает, куда ставить B-кадры: простым фиксированным шаблоном, быстрой эвристикой или полным RD-анализом.
- Когда менять. Для общего применения оставляйте значение по умолчанию. На очень быстрых пресетах выбирайте более быстрый алгоритм, если критична скорость; на медленных пресетах — более медленный (RD-оптимальный), когда нужно выжать максимум качества при заданном битрейте.
B-Pyramid (
enum, по умолчанию"normal")Как B-кадры могут ссылаться друг на друга.
- Что задаёт. Могут ли отдельные B-кадры использоваться опорными для других B-кадров, улучшая сжатие.
- Когда менять. Оставляйте включённым для стриминга и VOD. Отключайте для авторинга Blu-ray или старого оборудования, не поддерживающего B-пирамиду (спецификация допускает её только с Level 3.1 и выше и с некоторыми декодерами).
Slices (
number, по умолчанию0)Число слайсов на кадр.
- Что задаёт. На сколько независимо декодируемых слайсов делится каждый кадр.
- Когда менять. Оставляйте
0(один слайс на кадр) ради лучшего сжатия. Повышайте только для задач с низкой задержкой или параллельного декодирования, где требуется конкретное число слайсов.
Video Format (
enum, по умолчанию"unspecified")Флаг исходного формата в VUI.
- Что задаёт. Тег метаданных, описывающий исходный видеоформат (NTSC, PAL, компонентный, MAC и т. п.); декодеры используют его только справочно.
- Когда менять. Оставляйте значение по умолчанию, если только проверка соответствия стандарту ниже по потоку не требует конкретного тега (редко, в основном вещательные процессы).
6. Пример

Полный разбор — переменные, настройка каждого узла и ожидаемый результат — смотрите в H.264 HD.
7. Где используется
- Three-tier MP4 ladder (LQ / MQ / HQ) — три уровня x264 (LQ — двухпроходный CBR 400 кбит/с, MQ — однопроходный CBR 780 кбит/с, HQ — ABR 3000 кбит/с) подают на лестницу распространения с заданными оператором именами выходных файлов.
- Cropped H.264 MP4 from interlaced source — кодирует поток H.264 High в ABR 3000 кбит/с с цветовой сигнализацией BT.709 на двух параллельных ветвях; основная ветвь берётся из обрезанного и деинтерлейснутого (yadif) кадра.
- MPEG-TS broadcast pre-encode — кодирует поток H.264 High @ Level 4 с фиксированным CBR 9800 кбит/с и цветовой сигнализацией BT.709 для прямого мультиплекса MPEG-TS.
- Content-aware preview proxy ladder — кодирует прокси в ABR 600 кбит/с на SD-ветвях и 1200 кбит/с на HD-ветвях с согласованными ограничениями битрейта и размерами буфера.
- MP4 with branded logo overlay — кодирует брендированный кадр 1080p в ABR 1200 кбит/с (потолок 4800 кбит/с) для MP4 с корпоративным логотипом на каждом кадре.
- Adaptive streaming with HLS, DASH and captions — работает как программная копия H.264, питающая HLS v3, HLS v5 и ветвь субтитров ccinject.
- H.264 HD — перекодирует высокобитрейтный мастер в H.264 MP4 1280×720 25 fps.
8. Антипаттерны
- Перекодирование входа H.264. Когда источник уже H.264, перекодирование тратит ЦПУ и накапливает артефакты сжатия. Используйте copy, когда преобразование не нужно, или меняйте только контейнер.
- Rate Factor вместе с режимом ABR/CBR. Rate Factor управляет качеством в режиме CRF, а не битрейтом; задавать его при ABR или CBR бессмысленно — переключите Rate Control на нужный режим под целевой битрейт.
- Open GOP на входе HLS/DASH. Большинство сегментаторов требуют закрытых GOP на границах сегментов. Для выходов адаптивного стриминга оставляйте Open GOP выключенным.