NN_scene_name, и она соответствует секвенции Premiere 1:1: 01_… → Timeline 01, 02_… → Timeline 02. Затем UXP-ингест сам импортирует клипы, строит по секвенции на сцену и подкладывает синхронный звук петличек. Глава начинается со звука: срезы петличек по сценам и {TX}_{сцена}_timeline.wav по речи (§6, страницы 4.2–4.4), затем панель.create_folders.py / run_pipeline prepare). Здесь принятая структура превращается в ingest.json и таймлайны; саму раскладку и переименование сцен сюда не тянем — это предыдущий этап. Не путать со структурой/сдачей проекта (playbook).NN_scene → своя секвенция → всё это nest'ится в MASTER.
Исходники бьём по сценам в нумерованные английские папки прямо в 01_Source/: видео и TX-звук сцены лежат рядом. Имя = NN_scene_name. Клик по имени папки — копирует его.
{CODE}_01_innovation_center в бине 00_Source_Timelines. Внутри — клипы этой сцены и её звук в Sound/; при мультикаме клипы уходят на уровень глубже, в папки камер (CAM-A_FX3, CAM-C_Pocket) — камера клипа = поле cam в ingest, иначе имя этой папкиSound/ своей сцены рядом с исходной полосой (рендерит 0113_frame_align.py после fine-sync, ↓ Аудио); ingest и секвенции ссылаются только на них; целые записи рекордера — в архиве 99_Pipeline/DJI_Audio/01_Ingest · 02_Assembly · … + ↓…M01.XML сайдкары (убраны из Source)01_innovation_center, 02_rooftop… Номер папки = номер секвенции.NN_scene_SELECTS (стрингаут всех клипов, отсматриваешь пул) → NN_scene (чистовой кат под музыку).YT{CODE}_MASTER nest'ит нумерованные сцены по порядку → финал..MP4 кладёт сайдкар {clip}M01.XML (метаданные: таймкод, fps, S-Log3, линза). Они засоряют Source и Premiere для линковки не нужны. Убираем их в 00_Setup/Camera_XML/ — Source остаётся чистым (только .MP4), метаданные архивируются.
captureFps vs formatFps → детект слоу-мо (60/120p), CreationDate → кластеризация по сессиям съёмки.Панель YTAI Assembly, вкладка Ingest. Многосценный ingest собирается по стенным часам (wallClockBuilder): клипы импортируются в бины сцен, на каждую сцену — секвенция {CODE}_{сцена}, готовые уходят в бин 00_Source_Timelines. Раскладка: V — по камере, A — звук камер блоком (по дорожке на звуковой поток), выше — петлички, по дорожке на передатчик.
UXP находит проект по project.path. У несохранённого («Untitled») проекта пути нет → авто-детект не сработает. Жми ⌘S, сохрани .prproj в папку проекта.
Кнопка «Use Open Project» (или авто-подстановка при загрузке панели) берёт папку открытого проекта — как в footage-режиме. Иначе — «Select Project Folder» вручную. Панель авто-детектит 00_Setup/01_Ingest/{CODE}_ingest.json.
В списке Sequences to build отметить сцены (new · all · none) → Build Ingest. Когда секвенции уже есть, кнопка называется Rebuild Ingest и перед сборкой сама удаляет секвенции и бины отмеченных сцен — удалять руками не нужно, остальные сцены не трогаются. Панель всегда перечитывает ingest с диска. У измеренного ingest секвенция рождается из .sqpreset с точным числом дорожек, без однокадровых огрызков (4.3).
cam_layersA звук камер — по потоку на дорожкуA выше петлички {TX}_{сцена}_timeline.wavОткрыть секвенцию сцены → Verify Sync: панель сохраняет проект и меряет звук каждой пары дорожек. SYNC ✓ — худшая пара камера ↔ петличка ≤ ½ кадра, можно идти в цвет; DESYNC / INSTRUMENT / NO DATA — разбор по 4.4 Sync Verification.
Частота кадров — свойство клипа, а не сцены. Слоу-мо-кадр живёт в своей сцене-таймлайне рядом с соседями (важно для реза под музыку) и помечается лейблом/бином — но не выносится на отдельный таймлайн.
captureFps == formatFps) → пока не сконформишь — играют в реальном времени, не замедленно. Камера сама их не замедлила.
ПКМ по клипу → Modify → Interpret Footage → Assume this frame rate: 23.976. 60p → 40%, 120p → 20%, полное качество, без интерполяции. Клип приезжает на таймлайн уже медленным — режешь под бит как обычный.
Ещё медленнее / рампа входа-выхода — Time Remapping (резинка Speed). Nest'ишь один клип только под сложный рамп или экстремальное замедление (тогда Optical Flow).
captureFps vs formatFps в Camera-XML — список кандидатов на conform собирается оттуда, не на глаз.Звук на таймлайне — два слоя. Звук камер (встроен в MP4, движется с видео) — блоком: каждой камере столько A-дорожек подряд, сколько звуковых потоков в её файлах (FX3/ZV-E1 — одна, DJI Pocket 4 Pro — две). Петлички — выше блока, по дорожке на физический передатчик: {TX}_{сцена}_timeline.wav, WAV «в координатах таймлайна», по одному на пару сцена × передатчик, не оригиналы рекордера. Петличка — основной звук.
creation_time рано или поздно плывёт, у каждого куска — по-своему. Якорь — речь.
0113_frame_align.py) рендерит {TX}_{сцена}_timeline.wav — WAV «в координатах таймлайна»: формат с источника (Float32 mono), паузы = тишина. После любой правки ingest — перегнать скрипт и Rebuild.
ingest.json (tx_strips) ссылается только на эти рендеры; пути к исходным полосам хранятся в tx_strips_source — их читает пересборка. Целые записи рекордера *_orig*.wav живут в архиве 99_Pipeline/DJI_Audio/: это чистые исходники, монтаж их не трогает.01_Source/00_LUT/_build/{CODE}_color_plan.json (15_color/1503_color_apply/color_apply.py). Сюда, на собранные таймлайны, план приходит готовым и ложится кнопкой Apply Color (все секвенции сцен {CODE}_NN_…) или Active Only (открытая сцена): слои общего донора цвета (YTs/_color_donor/) кладутся на дорожку YTAI_COLOR прямо над камерами — по слою на момент времени, с проявкой и экспозицией верхнего лог-клипа. Запись экрана и референсы над этой дорожкой слой не трогает. Повторный запуск безопасен: прежние слои цвета заменяются.
Дорожку YTAI_COLOR панель создаёт сама, только если камеры — верхние дорожки. Если над камерами лежат запись экрана или ролики, вставить дорожку в середину стопки API не умеет: Sequence › Add Tracks… — одна видеодорожка сразу над последней камерой, панель найдёт её и назовёт.
| Симптом | Причина | Лечение |
|---|---|---|
| 🕳 Дырка на V1/A1 | Клип не встал — тяжёлый файл не доиндексировался (гонка импорта), findProjectItemByName … not found | Пересобрать (гонка недетерминирована) или перетащить клип из бина в дырку |
| 🧹 Однокадровые огрызки на V1/A1 и хвостах дорожек петличек | Секвенция собрана от посевного клипа: ingest не измерен (нет scene_fps / audio_streams), а удаление заглушек в живой Premiere 25.6/26 молча не работает. В логе — fallback seed+pre-warm | make_ingest.py --probe-audio --probe-fps --ingest … → 0113 → Rebuild (секвенция из пресета, огрызков нет) |
| 🔇 Звук «плывёт» | Синк сделан по часам камер/рекордера, а кварц врёт (± минуты, дрейф за день) | Синк по речи и звуку: word-sync → fine-sync → frame-align, пере-рендер *_timeline.wav (↑ Аудио), Rebuild → Verify Sync |
| 🔇 Клип без TX-звука | DJI не писал в этот момент | В *_timeline.wav это пауза-тишина — норма; рабочий звук — камерный |
| 🖥 Запись экрана не в синхроне | Билдер кладёт cam: "Screencast" по sync_source: "lesson_start" — встык от начала урока, wall_offset: 0, fine_sync: {}. Замера нет вообще, а creation_time дописан под ноль и потому связно врёт | Замерить по звуку против *_timeline.wav и вписать wall_offset → Build Ingest. Метод и грабли: 4.4 Sync Verification |
| 🔇 Звук уехал на сумму пауз | Билдер выбрасывает паузы между дублями: клип встаёт вплотную к предыдущему, а не на свой wall_offset. Куски петлички режутся по тем же границам, но с source_in == timeline_start — накопленный сдвиг в звук не попадает. Видео уехало, петличка осталась (YTUVIE01: 28,7 с). Руками клипы никто не двигал. Все сверки с планом при этом зелёные | Замерить по звуку и пересобрать петличку по замеру — 4.4, relav2.py. Поклипно паузы тоже не вырезать: только ripple со всеми дорожками и sync lock. Пересборка стирает клиповые эффекты — синхрон → цвет, не наоборот |
🎨 No free track above the cameras при Apply Color | Билдер кладёт дорожки подряд: камеры, затем запись экрана и референсы. Над камерами занято, а в середину стопки API дорожку не вставляет | Sequence › Add Tracks… — одна видеодорожка сразу над последней камерой, затем Apply Color: слой красит то, что ниже, и готовый Rec.709-материал обязан лежать выше |
🎨 No color_plan / No donor variant при Apply Color | Нет раскладки цвета проекта или в общем доноре нет варианта с нужным look | color_apply.py --project …; вариант — Build Color Donor в проекте-доноре канала, выбрать кубы руками, ⌘S (3.3 Scene LUTs) |
01_Source/02_<english_name>/ (TX-звук сцены ложится туда же).…M01.XML → 00_Setup/Camera_XML/.make_ingest.py --add или мост дня, 4.1) → в панели отметить её (new) → Build: секвенция {CODE}_02_<english_name> → nest в {CODE}_MASTER после 01.{project}/00_Setup/TIMELINES.md.