analyze

1. Сводка
Инспектирует один исходный пакет и выводит его технические свойства — кодек, растр, частоту кадров, длительность, число аудиоканалов, цветовую раскладку и многое другое — как именованные выходные пины, на которых узлы ниже по потоку могут маршрутизировать, фильтровать или подавать их в выражения. Ставьте его после download и перед первым решением в контентно-осознанном процессе.
2. Когда использовать
- Предполётный контроль качества контента — проверка, что кодек, разрешение, битовая глубина и аудиораскладка источника совпадают со спецификацией поставки до того, как взяться за кодирование.
- Определение формата для условной маршрутизации — ветвление процесса по высоте, частоте кадров или флагу чересстрочности источника, чтобы разные растры шли разными путями кодера.
- Построение паттерна «анализ-затем-решение» — подача инспектированных свойств прямо в один или несколько узлов decide или mdecide для управления лестницами разрешений, выбора семейства кодека или порогов по числу аудиодорожек.
- Параметризация узлов ниже по потоку — подтягивание инспектированного значения в выражение eval, которое выводит битрейт, имя файла или настройку фильтра, прежде чем setvar сохранит его для кодера.
3. Входы
Package—core.Package. Исходный пакет для инспекции; обычно выход download.Совместимые узлы выше по потоку:
4. Выходы
Package—core.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. Параметры

Форма «Настройки» содержит подпись плюс двухстолбцовый выбор 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.
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) или графа фильтров во входной пин упадёт на валидации процесса.