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

Last updated

analyze

Узел analyze в центре холста, отдающий пакет Package и метаданные-пин VideoHeight в остальной процесс.

1. Сводка

Инспектирует один исходный пакет и выводит его технические свойства — кодек, растр, частоту кадров, длительность, число аудиоканалов, цветовую раскладку и многое другое — как именованные выходные пины, на которых узлы ниже по потоку могут маршрутизировать, фильтровать или подавать их в выражения. Ставьте его после download и перед первым решением в контентно-осознанном процессе.

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

  • Предполётный контроль качества контента — проверка, что кодек, разрешение, битовая глубина и аудиораскладка источника совпадают со спецификацией поставки до того, как взяться за кодирование.
  • Определение формата для условной маршрутизации — ветвление процесса по высоте, частоте кадров или флагу чересстрочности источника, чтобы разные растры шли разными путями кодера.
  • Построение паттерна «анализ-затем-решение» — подача инспектированных свойств прямо в один или несколько узлов decide или mdecide для управления лестницами разрешений, выбора семейства кодека или порогов по числу аудиодорожек.
  • Параметризация узлов ниже по потоку — подтягивание инспектированного значения в выражение eval, которое выводит битрейт, имя файла или настройку фильтра, прежде чем setvar сохранит его для кодера.

3. Входы

  • Packagecore.Package. Исходный пакет для инспекции; обычно выход download.

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

    • download — узел-источник, забирающий пакет по URL.
    • concat — сшивает несколько пакетов встык перед инспекцией объединённой шкалы.

4. Выходы

  • Packagecore.Package. Исходный пакет, переданный без изменений, чтобы одна цепочка могла и инспектировать, и продолжать ниже по потоку.

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

    • decide — маршрутизирует по одному условию, выведенному из инспектированных свойств.
    • mdecide — N-путевая маршрутизация по инспектированным свойствам.
    • eval — вычисляет производное значение из инспектированных свойств.
    • map/audio, map/video, map/text, map/timecode — продолжают цепочку мультиплексирования на том же пакете, пока инспекционные пины ведут параллельную ветвь решения.
  • Метаданные-пины — по одному пину на инспектированное свойство, каждый типизирован под несомое им свойство. Все 27 видны в столбце Available PINs формы; на холсте появляются только перенесённые в Selected PINs. Полный список имён и типов пинов:

    • Duration (float64) — длительность программы в секундах.
    • VideoCodec (string) — идентификатор видеокодека источника.
    • VideoBitrate (int) — битрейт видео источника в бит/с.
    • VideoTimebase (float64) — временная база видео.
    • VideoProfile (string) — имя профиля кодека.
    • VideoLevel (int) — значение уровня кодека.
    • VideoWidth (int) — ширина кадра в пикселях.
    • VideoHeight (int) — высота кадра в пикселях.
    • VideoFrameRate (float64) — частота кадров в кадрах/с.
    • VideoSAR (float64) — соотношение сторон сэмпла.
    • VideoDAR (float64) — соотношение сторон при отображении.
    • VideoFieldOrder (string) — флаг чересстрочности (progressive, tt, bb).
    • VideoPixFormat (string) — имя пиксельного формата (например, yuv420p).
    • VideoColorRange (string) — цветовой диапазон (tv/pc).
    • VideoColorSpace (string) — цветовая матрица.
    • VideoColorTransfer (string) — характеристика передачи.
    • VideoColorPrimaries (string) — основные цвета (primaries).
    • VideoReferenceFrames (int) — закодированные опорные кадры.
    • AudioCodec (string) — идентификатор аудиокодека первой дорожки.
    • AudioBitrate (int) — битрейт аудио первой дорожки.
    • AudioTimebase (float64) — временная база аудио.
    • AudioProfile (string) — профиль аудиокодека.
    • AudioSampleRate (int) — частота дискретизации аудио в Гц.
    • AudioSampleFormat (string) — формат сэмплов аудио.
    • AudioChannelCount (int) — число каналов первой аудиодорожки.
    • AudioChannelLayout (core.AudioLayout) — дескриптор раскладки каналов.

5. Параметры

Форма «analyze Node Settings», двухстолбцовый выбор PIN: все инспектируемые свойства слева и выбранный набор инспекции справа.

Форма «Настройки» содержит подпись плюс двухстолбцовый выбор PIN.

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

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

    • Что задаёт. Подпись над плиткой; на то, какие свойства инспектируются, не влияет.
    • Когда менять. Задавайте, когда в одном процессе больше одного узла analyze — например, один инспектирует источник, а другой — ремультиплексированный промежуточный, — чтобы подписи на холсте различали ветви.
  • PINs (array строк, по умолчанию [])

    Список метаданных-пинов, публикуемых на плитке узла. Переносите свойства из Available PINs в Selected PINs управляющим шевроном; выбранные пины появляются справа на плитке и могут быть подключены ниже по потоку.

    • Что задаёт. Какие инспектированные свойства становятся маршрутизируемыми пинами. Свойства, оставленные в Available, не измеряются; свойства в Selected измеряются и выводятся.
    • Когда менять. Добавляйте каждое свойство, на которое ссылается decide / mdecide / eval ниже по потоку; остальные убирайте, чтобы холст оставался читаемым. Добавление одного VideoHeight — типичный минимум для разделения SD/HD; добавьте AudioChannelCount для разделения «стерео–объёмный звук», VideoCodec для развилки «перекодировать-или-копировать» и так далее.

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

JSON-ключ Название поля
pins PINs

6. Пример

Процесс Content-aware preview proxy ladder на холсте

Полный разбор — переменные, настройка каждого узла и ожидаемый результат — смотрите в Content-aware preview proxy ladder.

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

  • Content-aware preview proxy ladder — инспектирует VideoHeight, AudioChannelCount и AudioChannelLayout источника, чтобы процесс выбрал правильный растр прокси и правильную аудиораскладку для каждого варианта выше по потоку.

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

  • Маршрутизация по невыбранному пину. decide / mdecide ниже по потоку, ссылающийся на инспекционный пин, не перенесённый в Selected PINs, увидит null-значение и молча уйдёт не в ту ветвь. Убедитесь, что каждое свойство, читаемое решением, есть в Selected PINs на этом узле.
  • Выбор каждого доступного пина «на всякий случай». Каждый выбранный пин публикуется на плитке и захламляет разводку; берите только свойства, на которых процесс реально маршрутизирует. Полный набор свойств всё равно вычисляется внутренне — выбор пина лишь решает, что выводится.
  • Инспекция внутри тесного цикла. analyze отрабатывает раз на пакет на входном ребре; включение его на каждом варианте веера не добавляет информации после первой инспекции. Инспектируйте один раз, разводите итоговые пины веером.
  • Инспекция непакетного входа выше по потоку. analyze ждёт core.Package. Подключение одиночной дорожки (выход map/audio, map/video) или графа фильтров во входной пин упадёт на валидации процесса.
Медиа.маги Документация