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

Last updated

Обрезанный H.264 MP4 из чересстрочного источника

1. Что создаёт этот процесс

Перекодирует чересстрочное исходное видео в поставку H.264 MP4 класса 1080p25, где картинка обрезана до фиксированного окна, а чересстрочность удалена. Параллельно из того же источника выводится второй MP4, чтобы обрезанный, деинтерлейснутый выход можно было A/B-сравнить с перекодированием «как есть» на тех же настройках H.264 и AAC.

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

  • У вас мастер SD или HD с постоянным леттербоксом или пиллербоксными чёрными полосами, и нужен чистый обрезанный MP4, заполняющий кадр.
  • Нужно перекадрировать архивную запись 4:3 в более тесное окно перед доставкой, без пересмасштабирования.
  • Источник несёт чересстрочное видео (вещательная запись, перенос с ленты), а поставка должна быть прогрессивной на фиксированной частоте кадров.
  • Нужно записать в той же задаче эталонное кодирование бок о бок, чтобы обрезанный, деинтерлейснутый результат можно было сверить с необработанным источником на идентичных настройках H.264 и AAC.

3. Входы

  • Исходный файл — любой контейнер и кодек, которые платформа может демультиплексировать, с одной видеодорожкой и хотя бы одной аудиодорожкой. Чересстрочные источники — основная цель; прогрессивные источники проходят сквозь деинтерлейсер без изменений, когда на приёмной стороне задано Only deinterlace frames marked as interlaced.
  • Переменные:
    • $Get — URL исходного видео.
    • $Put_01 — URL, куда записывается обрезанный, деинтерлейснутый MP4.
    • $Put_02 — URL, куда записывается эталонный (необрезанный, необработанный) MP4.

4. Выход

  • Файл 1 (обрезанный + деинтерлейснутый) — контейнер MP4, видео H.264 High profile на 3000 кбит/с ABR (потолок и буфер 8000 кбит/с) с основными цветами, матрицей и передачей BT.709, зафиксированное на 25 кадрах/с и обрезанное до окна 200×200 со смещением 100 px вправо и 100 px вниз от верхнего левого угла источника. Стереозвук AAC на 48 кГц, 160 кбит/с.
  • Файл 2 (эталонное перекодирование) — контейнер MP4 с теми же настройками H.264 на прямом сквозном пропуске кадра источника. Битрейт аудио AAC оставлен на значении платформы по умолчанию, а не закреплён на 160 кбит/с, что является единственным аудиоразличием между двумя поставками.
  • Назначения — Файл 1 записывается на URL в $Put_01; Файл 2 — на URL в $Put_02.

5. Обзор процесса

Процесс обрезанного H.264 MP4 на холсте

Источник забирается из $Get и разводится веером в два параллельных конвейера, разделяющих его видео- и аудиопотоки. На обрезанной ветви видео нормализуется в yuv420p, фиксируется на 25 кадрах/с, деинтерлейсится через yadif, затем обрезается до фиксированного окна 200×200, прежде чем x264 кодирует его как H.264 High на 3000 кбит/с ABR с цветовой сигнализацией BT.709. Совпадающий аудиопуть приводит к 16-битному PCM на 48 кГц и кодирует как AAC на 160 кбит/с. Эталонная ветвь выполняет ту же нормализацию и кодирование x264, но пропускает этапы деинтерлейсинга и обрезки и оставляет битрейт AAC на значении платформы по умолчанию. Каждая ветвь заканчивается своим мультиплексором MP4 и загружается на отдельную переменную назначения, так что одна задача выдаёт обе поставки.

6. Настройка по узлам

Crop (vf/crop)

Форма «Crop Edit properties»

Вырезает фиксированное прямоугольное окно из кадра источника. Обрезка выполняется после этапа деинтерлейсинга, чтобы у деинтерлейсера ещё были оригинальные границы полей — обрезка первой сдвинула бы сетку полей и дала бы гребёнчатые артефакты, которые деинтерлейсер не сможет разрешить чисто.

Параметры этого примера:

  • X100. Горизонтальное смещение верхнего левого угла окна обрезки от левого края источника, в пикселях.
  • Y100. Вертикальное смещение верхнего левого угла окна обрезки от верхнего края источника, в пикселях.
  • Resolution200x200. Ширина и высота сохраняемого окна в пикселях. Вместе с X и Y эти три значения задают прямоугольник, сохраняемый в поставке: пиксели из столбцов с 100 по 299 и из строк с 100 по 299 источника.

Чтобы рассчитать свою обрезку, считайте X и Y верхним левым углом прямоугольника, который хотите сохранить, а Resolution — его размером. Для центральной обрезки задайте X = (ширина источника − ширина цели) / 2 и Y = (высота источника − высота цели) / 2.

Deinterlace (vf/deinterlace)

Форма «Deinterlace Edit properties»

Преобразует чересстрочный источник в прогрессивные кадры, прежде чем их увидят обрезка и кодер. Обработка с учётом полей требует оригинальных границ кадра, поэтому этот узел стоит перед Crop в конвейере.

Параметры этого примера:

  • Deinterlacing Algorithmyadif. Yet Another Deinterlacing Filter — стандартная для платформы реализация yadif с адаптацией к движению. Надёжный универсальный выбор для вещательных записей SD и HD.
  • Interlacing Modesend_frame. Один прогрессивный кадр на входной кадр; альтернатива send_field удваивает частоту кадров, выдавая один кадр на поле.

Pixel Format (vf/format)

Форма «Pixel Format Edit properties»

Приводит отображённое видео к 8-бит 4:2:0 цветовой раскладке, которую кодер H.264 ниже по потоку потребляет нативно. Оба видеоконвейера выполняют этот этап с идентичными параметрами.

Параметры этого примера:

  • Formatyuv420p. 8-бит 4:2:0 планарный Y′CbCr — стандартная раскладка цветности для поставок H.264 MP4.

FPS (vf/fps)

Форма «FPS Edit properties»

Фиксирует видео на постоянной частоте кадров перед кодером. Оба видеоконвейера выполняют этот этап с идентичными параметрами.

Параметры этого примера:

  • Frame Rate25/1. 25 прогрессивных кадров в секунду, базовая частота европейского вещания. Задано явно, чтобы кодер и мультиплексор планировали вокруг известного ритма, а не выводили его из источника.

Sample Format (af/aformat)

Форма «Sample Format Edit properties»

Приводит отображённое аудио к известному формату сэмплов PCM перед пересэмплером и кодером AAC. Оба аудиоконвейера выполняют этот этап с идентичными параметрами.

Параметры этого примера:

  • Formats16. Знаковый 16-битный чередующийся PCM — стандартный промежуточный формат, который потребляет кодер AAC.

Sample Rate (af/aresample)

Форма «Sample Rate Edit properties»

Пересэмплирует аудио к целевой частоте перед кодером AAC, чтобы закодированная дорожка имела фиксированную частоту дискретизации независимо от источника. Оба аудиоконвейера выполняют этот этап с идентичными параметрами.

Параметры этого примера:

  • Rate48000 Hz. 48 кГц — базовая частота вещательной и MP4-доставки.

x264 (x264)

Форма «x264 Edit properties»

Кодирует каждый видеоконвейер как H.264. Работают два экземпляра x264, по одному на ветвь, и они разделяют идентичные параметры — единственное различие между поставками — фильтрация, применённая выше по потоку (деинтерлейсинг + обрезка на главной ветви, ничего — на эталонной).

Параметры этого примера:

  • H264 Codec Profilehigh. High profile даёт кодеру доступ к B-кадрам, CABAC и преобразованиям 8×8 — инструментам кодирования, которые поддерживает каждый современный декодер H.264.
  • Presetsuperfast. Пресет приоритета скорости; держит высокую пропускную способность кодирования для A/B-эталонной задачи, где эффективность сжатия важна меньше оборачиваемости.
  • Rate ControlABR. Режим среднего битрейта, удерживающий предсказуемый размер файла вокруг цели.
  • Bitrate3000 KBPS. Целевой средний видеобитрейт.
  • Max bitrate8000 KBPS. Ограничивает кратковременные всплески примерно 2,7-кратной величиной среднего.
  • Buffer size8000 KBPS. Буфер VBV, с которым работает контроллер битрейта, размером под Max bitrate, чтобы короткая сцена могла потратить весь запас.
  • Key Interval50. Один ключевой кадр каждые две секунды при 25 кадрах/с.
  • B-Frames2. Два подряд идущих B-кадра на GOP.
  • Reference Frames3. Три опорных кадра, доступных оценке движения.
  • Color Spacebt709. Коэффициенты матрицы BT.709 — HD-матрица цвета.
  • Color Transferbt709. Характеристики передачи BT.709.
  • Color Primariesbt709. Основные цвета BT.709. Задание всех трёх цветовых полей гарантирует, что декодер ниже по потоку нарисует HD-цвет правильно, даже если сигнализация источника отсутствовала или была неверной.

Полный список параметров и компромиссов см. в x264.

AAC (aac)

Форма «AAC Edit properties»

Кодирует каждый аудиоконвейер как AAC для контейнера MP4. Работают два экземпляра AAC, по одному на ветвь. Они используют те же значения узла по умолчанию во всём, кроме Bitrate, который и есть единственное аудиоразличие между двумя поставками.

Параметры этого примера:

  • Bitrate160 KBPS. Главная обрезанная, деинтерлейснутая поставка — чуть выше базовых 128 кбит/с стерео ради чуть более прозрачных диалогов и музыки.

Параметры (вариант B): эталонный MP4 оставляет Bitrate пустым, что отправляет кодер AAC к значению платформы по умолчанию вместо цели 160 кбит/с на главной ветви.

Полный список параметров и компромиссов см. в AAC.

MP4 (mp4)

Форма «MP4 Edit properties»

Мультиплексирует закодированные видео H.264 и аудио AAC в единый файл MP4 в конце каждой ветви. Работают два экземпляра MP4 с идентичными параметрами — каждое поле формы оставлено пустым, поэтому мультиплексор выводит имя файла из контекста выше по потоку, а каждый узел загрузки пишет на свою переменную назначения.

Параметры этого примера:

  • Filename — пусто. Мультиплексор выводит имя файла из контекста выше по потоку; узел upload ниже задаёт фактическое назначение через $Put_01 (главная) или $Put_02 (эталонная).

Полный список параметров и компромиссов см. в MP4.

7. Запуск

  1. Откройте Процессы → Создать и либо соберите граф выше, либо продублируйте существующий шаблон обрезанного MP4.
  2. Задайте $Get равным URL исходного видео, $Put_01 — URL, куда должен быть записан обрезанный, деинтерлейснутый MP4, а $Put_02 — URL, куда должно быть записано эталонное перекодирование.
  3. Скорректируйте X, Y и Resolution на узле Crop так, чтобы сохраняемое окно совпало с вашим источником. Значения по умолчанию в этом примере обрезают квадрат 200×200 со смещением (100, 100) от верхнего левого угла — полезно лишь как заглушка; замените их фактическим прямоугольником обрезки для вашей доставки.
  4. Нажмите Запустить либо привяжите процесс к папке мониторинга для автоматической обработки. Оба файла MP4 появятся по URL, заданным в $Put_01 и $Put_02, когда задача завершится.

8. Варианты

  • Уберите эталонную ветвь целиком (удалите нижний конвейер встык, включая его upload и переменную $Put_02), когда нужна только обрезанная, деинтерлейснутая поставка.
  • Переключите Interlacing Mode на Deinterlace на send_field, если поставка должна идти на удвоенной частоте полей (50 кадров/с здесь) — контроллер битрейта, Frame Rate и Key Interval на x264 нужно перенастроить под это.
  • Замените Crop на Scale, когда цель — изменить размер всего кадра, а не вырезать из него окно. Два фильтра дополняют друг друга: сперва обрезать, затем масштабировать, когда перекадрируете под конкретный растр.
  • Поднимите Preset на x264 с superfast до medium или slow для главной ветви, когда эффективность сжатия важнее скорости кодирования.

9. Связанное

  • x264
  • AAC
  • MP4
  • H.264 HD — тот же базовый конвейер x264 + AAC, выдающий единую поставку MP4 из прогрессивного источника, без этапов обрезки / деинтерлейсинга.

10. Заметки

Порядок конвейера важен. Deinterlace стоит перед Crop, потому что деинтерлейсинг с учётом полей читает оригинальные границы кадра, чтобы выровнять нечётные и чётные поля; обрезка первой сдвигает сетку полей на смещение Y, и деинтерлейсер больше не может разделить поля чисто. Pixel Format и FPS также стоят перед x264 на обеих ветвях, чтобы кодер видел нормализованный поток независимо от пиксельного формата или сигнализации частоты кадров источника.

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