Трёхуровневая лестница MP4 (LQ / MQ / HQ)
1. Что создаёт этот процесс
Три поставки MP4, выдаваемые параллельно из одного источника: низкокачественное прокси 448×252 на 400 кбит/с двухпроходного H.264, среднее 640×360 на 780 кбит/с однопроходного CBR и высокое 1920×1080 на 3000 кбит/с ABR. Имя выходного файла каждого уровня задаётся переменной процесса ($LQ_Filename, $MQ_Filename, $HQ_Filename), так что оператор может назвать каждый уровень независимо на этапе выполнения, а не зашивать имена файлов в граф.
2. Когда использовать
- Вы публикуете лестницу распространения (LQ-прокси / MQ-веб / HQ-мастер) и хотите каждый уровень за один проход, чтобы кодирования гарантированно разделяли кадр источника, аудиодорожку и цветовой конвейер.
- Вы передаёте предварительные мастеры упаковщику OTT, который ожидает входы H.264 MP4 на трёх уровнях качества и принимает тройку файлов под выбранными оператором именами.
- Вы принимаете в контент-библиотеку, которая хранит дельты LQ / MQ / HQ для каждого ассета, и хотите имена файлов, привязанные к ID каталога, а не сгенерированные отдельным шагом именования ниже по потоку.
- Нужно дружественное к папке мониторинга транскодирование, где каждая задача параметризуется в момент отправки — три переменные имён файлов и есть единственные регуляторы, которые оператор крутит на ассет.
3. Входы
- Исходный файл — любой контейнер и кодек, которые платформа может демультиплексировать, с одной видеодорожкой и хотя бы одной аудиодорожкой. Источники со смешанным соотношением сторон дополняются пиллербоксом или леттербоксом цветовым конвейером выше кодеров; процесс предполагает, что источник уже дополнен до 16:9 или что растр источника совпадает.
- Файл логотипа — кадр или короткий клип, читаемый в узел Overlay и вжигаемый в видео каждого уровня. Подайте прозрачный PNG под размер уровня с наименьшим растром; узел наложения центрирует его по умолчанию.
- Переменные:
$Download— URL исходного видео.$Logo_path— URL ассета логотипа.$LQ_Filename— имя выходного файла для LQ MP4. Задавайте на задачу (например,asset_1234_LQ.mp4); узел Set Var присваивает его в пул переменных, и мультиплексор LQ MP4 читает его.$MQ_Filename— имя выходного файла для MQ MP4.$HQ_Filename— имя выходного файла для HQ MP4.$Out_filename— базовое имя файла, из которого узлы Eval выводят имя файла каждого уровня ({{ Out_filename }}_LQ.mp4и так далее). Используйте, когда хотите, чтобы оператор подавал одно базовое имя, а три имени файлов уровней генерировались автоматически; оставьте пустым и подайте$LQ_Filename/$MQ_Filename/$HQ_Filenameнапрямую, чтобы пропустить вывод.$Upload,$upload1,$upload2— URL назначений, по одному на узел Upload, принимающие готовые MP4.
4. Выход
- Файл LQ — контейнер MP4, 448×252 H.264 High на уровне 3.0, двухпроходный CBR на 400 кбит/с, дистанция B-кадров 2 кадра, GOP 50 кадров, цветовая сигнализация BT.709. Стереозвук AAC на 48 кГц, 160 кбит/с. Имя файла задаётся
$LQ_Filename. - Файл MQ — контейнер MP4, 640×360 H.264 High на уровне 3.0, однопроходный CBR на 780 кбит/с, GOP 50 кадров, цветовая сигнализация BT.709. Стерео AAC на 48 кГц, 160 кбит/с. Имя файла задаётся
$MQ_Filename. - Файл HQ — контейнер MP4, 1920×1080 H.264 High на уровне 4.0, однопроходный ABR на 3000 кбит/с с maxrate 8000 кбит/с и буфером 8000 кбит/с, GOP 50 кадров, цветовая сигнализация BT.709. Стерео AAC на 48 кГц, 160 кбит/с. Имя файла задаётся
$HQ_Filename. - Назначения — каждый пакет MP4 отправляется через узел Upload на URL, настроенный на этом узле (
$Upload,$upload1,$upload2).
5. Обзор процесса

Источник забирается из $Download и разделяется на аудио и видео. Аудио приводится один раз — преобразуется в s16, пересэмплируется до 48 кГц, кодируется как AAC на 160 кбит/с — и полученный стереопоток AAC разделяется всеми тремя мультиплексорами MP4. Видеопуть разводится веером в три параллельные ветви, разделяющие одни этапы формирования (цветность yuv420p, 25 кадров/с, деинтерлейсинг yadif, соотношение сторон при отображении 16:9, наложение логотипа из $Logo_path) и различающиеся только целевым растром Scale — 448×252 для LQ, 640×360 для MQ, 1920×1080 для HQ. Каждая ветвь передаёт сформированное видео своему экземпляру x264, настроенному под битрейт и профиль контроля битрейта уровня, затем своему мультиплексору MP4. Параллельно цепочке кодирования три пары Eval + Set Var выводят три имени файлов уровней из $Out_filename ({{ Out_filename }}_LQ.mp4, _MQ.mp4, _HQ.mp4) и сохраняют их в $LQ_Filename / $MQ_Filename / $HQ_Filename; три мультиплексора MP4 затем подставляют эти переменные в своё поле Filename. Три готовых пакета загружаются независимо.
6. Настройка по узлам
Set Var (setvar)

Сохраняет значение в переменную процесса, чтобы более поздние узлы могли его прочитать. В этом процессе работают три экземпляра, по одному на имя файла уровня; каждый берёт строку, произведённую узлом Eval выше по потоку на своём входе Value, и присваивает её переменной, названной в форме. Переменная затем доступна каждому узлу ниже по потоку в графе как $<Name> — так три мультиплексора MP4 подхватывают имена файлов своих уровней, не зашивая эти значения в сам узел MP4.
Параметры этого примера:
- Node Label — пусто. Свободная подпись, печатаемая на плитке холста; задавайте, когда несколько узлов Set Var разделяют граф.
- Name —
HQ_Filename. Переменная, которой присваивается результат выражения Eval выше по потоку; мультиплексор HQ MP4 затем читает её обратно как$HQ_Filenameв своём поле Filename. Поле — это селектор, перечисляющий каждую переменную, объявленную в процессе (для ясности в выпадающем списке показан префикс$), поэтому переменная должна уже существовать в списке переменных процесса, прежде чем Set Var сможет на неё нацелиться.
Параметры (вариант MQ_Filename):
- Name —
MQ_Filename. Та же форма, что и у экземпляра HQ, в паре с Eval, выдающим{{ Out_filename }}_MQ.mp4, и читаемая обратно мультиплексором MQ MP4.
Параметры (вариант LQ_Filename):
- Name —
LQ_Filename. В паре с Eval LQ и читаемая мультиплексором LQ MP4.
Eval (eval)

Вычисляет шаблон в стиле Jinja относительно контекста переменных процесса и выдаёт результат на свой выход Value. В этом процессе работают три экземпляра, по одному на уровень; каждый получает исходный пакет на входе A (чтобы его выражение видело данные зондирования и переменные процесса в одном контексте), и каждый питает узел Set Var, записывающий результат в переменную имени файла уровня.
Параметры этого примера:
- Node Label —
HQ filename. Свободная подпись, печатаемая на плитке холста; задавайте, когда несколько узлов Eval разделяют граф, чтобы читающий с одного взгляда понимал, что вычисляет каждый. - Expression —
{{ Out_filename }}_HQ.mp4. Сцепляет базовое имя файла, поданное в$Out_filename, с литералом-суффиксом_HQ.mp4. Синтаксис с двойными скобками — в стиле Jinja: каждый идентификатор в{{ … }}ищется в контексте процесса, так что можно ссылаться на любую переменную$или любое полеA.Probe.*пакета выше по потоку без кавычек.
Параметры (вариант MQ filename):
- Node Label —
MQ filename. - Expression —
{{ Out_filename }}_MQ.mp4. Та же форма, что и у экземпляра HQ, с другим литералом-суффиксом.
Параметры (вариант LQ filename):
- Node Label —
LQ filename. - Expression —
{{ Out_filename }}_LQ.mp4. Та же форма с суффиксом LQ.
x264 (x264)

Кодирует подготовленное видео в H.264. Работают три экземпляра, по одному на уровень; форма выше показывает уровень HQ. Каждый экземпляр разделяет одну цветовую сигнализацию (основные цвета, передача и матрица BT.709), один интервал ключевых кадров 50 кадров и одну дистанцию B-кадров 2 кадра — между уровнями различаются только растр (задаётся на Scale выше), бюджет битрейта и режим контроля битрейта.
Параметры этого примера (вариант HQ — 1920×1080 на 3000 кбит/с ABR):
- H264 Codec Profile —
high. Профиль H.264, отгружающий цветность 4:2:0 на 8 бит с самой широкой поддержкой плееров и эффективностью, на которую полагается каждый современный декодер. - Preset —
superfast. Меняет эффективность сжатия на пропускную способность кодера; на 3000 кбит/с визуальная цена мала, а ускорение важно, когда мастер-кодирование идёт по длинному источнику. - H264 Codec Level —
4. Требуется растром 1920×1080 и максимальным битрейтом 3000 кбит/с. - Rate Control —
ABR. Режим среднего битрейта с жёстким потолком; даёт более плотный размер файла, чем CBR, при той же номинальной скорости, позволяя кодеру тратить биты там, где картинке нужно. - Bitrate —
3000kbps. Целевое среднее для уровня HQ. - Max bitrate —
8000kbps. Потолок мгновенного битрейта; в паре с буфером ниже. - Buffer size —
8000kbps. Буфер VBV, который в паре с Max bitrate; кодер держится в потолке на скользящем окне этого размера. - Key Interval —
50. Принудительный IDR-ключевой кадр каждые 50 кадров (2 с при 25 кадрах/с); стандарт для упаковщиков ниже по потоку, привязывающих сегменты к границам ключевых кадров. - B-Frames —
2. До 2 подряд идущих B-кадров между опорными — значение H.264 ABR по умолчанию для веб-кодирований среднего качества. - Reference Frames —
3. 3 опорных кадра на этом профиле; поднимите для контента с медленным движением, опустите, когда бюджет CPU ограничен. - Color Space / Color Transfer / Color Primaries —
bt709. Теги HD-вещательной цветовой сигнализации, записанные в битстрим, чтобы декодер применил правильную матрицу при воспроизведении.
Параметры (вариант LQ — 448×252 на 400 кбит/с двухпроходный):
- H264 Codec Level —
3. Требуется растром 448×252. - Preset —
medium. Жертвует скоростью кодирования ради эффективности сжатия на низком битрейте, где важен каждый сэкономленный байт. - Rate Control —
CBR. Режим постоянного битрейта; держит LQ-прокси на предсказуемой скорости для миниатюрных / превью-транспортов. - Bitrate —
400kbps. - Two Pass — включён. Два прохода кодирования; первый анализирует сложность, второй распределяет биты на основе этого анализа. Удвоенное время кодирования оправдано на 400 кбит/с, поскольку у прокси нет запаса битрейта, чтобы замаскировать однопроходную догадку.
- Reference Frames —
2.
Параметры (вариант MQ — 640×360 на 780 кбит/с однопроходный CBR):
- H264 Codec Level —
3. - Preset —
medium. - Rate Control —
CBR. - Bitrate —
780kbps. - Reference Frames —
2.
Полный список параметров и компромиссов см. в x264.
AAC (aac)

Кодирует подготовленное аудио один раз и разделяет закодированный поток AAC между всеми тремя мультиплексорами MP4. Одно аудиокодирование дешевле трёх идентичных и гарантирует побайтово одинаковое аудио по всем уровням, что упрощает A/B-сравнение.
Параметры этого примера:
- Bitrate —
160kbps. Стерео AAC-LC на 48 кГц; комфортный запас для музыки и голоса без раздувания размера файла.
Полный список параметров и компромиссов см. в aac.
MP4 (mp4)

Мультиплексирует закодированные видео H.264 и общее аудио AAC в контейнер MP4. Работают три экземпляра, по одному на уровень; каждый читает имя файла уровня из переменной процесса, заполненной выше по потоку парой Eval + Set Var, так что три мультиплексора разделяют идентичный шаблон формы и различаются только тем, на какую переменную ссылаются.
Параметры этого примера (вариант HQ):
- Node Label —
HQ. Подпись на холсте, различающая три уровня; косметическая. - Filename —
$HQ_Filename. Переменная, заданная HQ Set Var выше по потоку. Поле — это селектор, перечисляющий каждую переменную, объявленную в процессе (в выпадающем списке для ясности показан префикс$); выберите совпадающую переменную уровня, чтобы готовый файл попал под выбранным оператором именем.
Параметры (вариант MQ — MQ filename):
- Node Label —
MQ. - Filename —
$MQ_Filename.
Параметры (вариант LQ — LQ filename):
- Node Label —
LQ. - Filename —
$LQ_Filename.
Полный список параметров и компромиссов см. в mp4.
Scale (vf/scale)

Изменяет размер источника до растра уровня. Три экземпляра Scale — единственный этап формирования, где три цепочки кодирования действительно расходятся — каждый другой видеофильтр применяет идентичные параметры по уровням.
Параметры этого примера (вариант HQ):
- Resolution —
1920x1080. Мастер-растр HQ. - Sample Aspect Ratio (SAR) — выключено. Исходный SAR оставлен в покое; соотношение сторон при отображении 16:9 идёт с этапа DAR ниже.
Параметры (вариант MQ — растр 640×360):
- Resolution —
640x360.
Параметры (вариант LQ — растр 448×252):
- Resolution —
448x252.
Полный список параметров и компромиссов см. в vf/scale.
DAR (vf/dar)

Помечает видео соотношением сторон при отображении 16:9, чтобы плеер рисовал кадр правильно независимо от того, как источник сигнализировал своё соотношение. Работают три экземпляра, по одному на ветвь, все настроены одинаково.
Параметры этого примера:
- Aspect Ratio —
16:9. Стандартное HD-широкоэкранное.
Pixel Format (vf/format)

Преобразует видео к 8-бит 4:2:0 цветности, которую H.264 кодирует нативно. Три экземпляра работают по ветвям, все идентичны.
Параметры этого примера:
- Format —
yuv420p. 8-бит планарный Y′CbCr с субдискретизацией цветности 4:2:0 — раскладка цветности, которую поддерживает каждый потребительский декодер H.264.
FPS (vf/fps)

Фиксирует видео на постоянной частоте кадров перед кодером. Работают три экземпляра, все идентичны.
Параметры этого примера:
- Frame Rate —
25/1. 25 прогрессивных кадров в секунду; в паре с Key Interval 50 кадров на x264 даёт IDR-ритм 2 с.
Deinterlace (vf/deinterlace)

Убирает чересстрочность из вещательного или ленточного источника, чтобы выход H.264 был прогрессивным. Работают три экземпляра, все настроены одинаково.
Параметры этого примера:
- Deinterlacing Algorithm —
yadif. Стандартный алгоритм yet-another-deinterlace-filter; широко используется и предсказуем. - Interlacing Mode —
send_frame. Выдавать один выходной кадр на входной кадр; альтернативаsend_fieldудваивает выходную частоту и является неверным выбором, когда кодер ниже по потоку ожидает 25 кадров/с.
Overlay (vf/overlay)

Вжигает логотип, забранный из $Logo_path, в видео перед кодером. Работают три экземпляра, по одному на ветвь; все оставлены на значениях по умолчанию (логотип центрирован).
Параметры этого примера:
- X — пусто. Размещение по горизонтали по умолчанию (центрировано на выходном кадре).
- Y — пусто. Размещение по вертикали по умолчанию.
Sample Format (af/aformat)

Преобразует формат сэмплов аудио перед пересэмплером и кодером AAC. Один af/aformat работает на общей аудиоцепочке.
Параметры этого примера:
- Format —
s16. 16-битные знаковые целочисленные сэмплы; канонический входной формат AAC.
Sample Rate (af/aresample)

Пересэмплирует аудио до 48 кГц, чтобы кодер AAC видел фиксированную частоту независимо от источника.
Параметры этого примера:
- Rate —
48000Hz. Стандартная для вещания и OTT частота дискретизации; чисто сочетается с AAC на 160 кбит/с стерео.
7. Запуск
- Откройте Процессы → Создать и либо соберите граф выше, либо импортируйте шаблон трёхуровневой лестницы MP4.
- Задайте
$Downloadравным URL исходного видео, а$Logo_path— URL ассета логотипа. - Выберите один из двух операторских сценариев для имён файлов уровней:
- Напрямую. Задайте
$LQ_Filename,$MQ_Filenameи$HQ_Filenameравными трём полным именам файлов, которые хотите (asset_LQ.mp4и так далее). Оставьте$Out_filenameпустым; три выражения Eval дадут пустые результаты, а узлы Set Var станут холостыми, оставив ваши прямые значения на месте. - С выводом. Задайте
$Out_filenameравным базовому имени (asset_1234); три узла Eval добавят_LQ.mp4,_MQ.mp4и_HQ.mp4, а узлы Set Var запишут результаты в три переменные имён файлов уровней.
- Напрямую. Задайте
- Задайте
$Upload,$upload1и$upload2равными URL назначений для трёх уровней. - Нажмите Запустить либо привяжите процесс к папке мониторинга для автоматической обработки. Готовые MP4 появятся по URL загрузки, когда задача завершится.
8. Варианты
- Скорректируйте Bitrate на каждом уровне x264 независимо, чтобы перенацелить лестницу; остальная часть графа переносится без изменений.
- Переключите Rate Control на HQ x264 с
ABRнаCRFради мастер-кодирования с фиксированным качеством; уровни LQ и MQ остаются на CBR/ABR ради предсказуемого профиля размера файла. - Добавьте четвёртый уровень, продублировав любую из ветвей Scale → x264 → MP4, объявив дополнительную переменную
$XQ_Filenameи добавив совпадающую пару Eval + Set Var ({{ Out_filename }}_XQ.mp4). - Уберите этап Overlay на каждой ветви, если поставка не должна нести водяной знак; ветви сворачиваются в пятиэтапную цепочку фильтров.
9. Связанное
- x264
- mp4
- aac
- vf/scale
- Адаптивный стриминг: HLS, DASH и субтитры — когда поставка — OTT-лестница, упакованная как HLS или DASH, а не три независимых MP4.
- Превью-прокси с адаптивным качеством — для одноуровневого прокси, когда нужен только выход LQ.