/edit-recording — 长格式编辑
目标:$ARGUMENTS(一个 Resolve 项目名称、一个录制文件,或为空 = Resolve 中打开的项目)。
在执行任何操作之前:阅读配置文件(video-toolkit §0)并遵循 editing-rules — 录制文件夹为只读,除非要求否则不处理音频/画面,在应用前提出建议。检查 toolbox_status,并确保 Resolve MCP 回答 project_manager get_current(免费版:用户必须在项目打开的情况下运行 Workspace → Scripts → Utility → resolve_bridge)。
项目文件夹:<频道文件夹>/<ResolveProject>/(video-toolkit §0)。
先制定计划。 如果项目文件夹中的 plan.md 包含 Status: approved,则遵循它:其目标、保留哪些部分、添加哪些叠加层、图形、B-roll 和音效,以及使用哪种工具。如果没有批准的计划,步骤 1–3(读取时间线、转录、建议剪切)是可以的,因为它们不会改变任何内容,并且为计划提供信息。但在添加叠加层、新素材、Blender 镜头、新的屏幕录制或音效之前,请运行 plan 技能:录制内容是“已存在的内容”,计划决定每个部分需要什么。除非计划要求,否则切勿录制新的屏幕素材。
步骤
- 获取时间线 — 从 Resolve 获取当前项目和时间线。如果还没有项目,则从录制内容创建一个:在导入之前设置时间线 fps(
recordings.fps/resolve.timeline_fps)和分辨率,然后要求用户将播放帧率设置为匹配(API 无法做到)。导入屏幕文件,如果存在recordings.separate_camera_file,则导入摄像头文件(recordings.camera_file_pattern)。 - 捕获布局 — 将时间线项目(音频 1 = 语音轨道)读取到
timeline/<timeline>.audio1.json。一个会话可能包含多个文件,音频 1 会连续播放;记录它使用的每个源文件。如果时间线上有额外的录音机音频轨道(桌面音频、重复的麦克风),请指出并保留它们。 - 转录 —
transcribe音频 1 使用的每个源文件(麦克风 =recordings.mic_audio_stream,来自配置文件的vocab),保存到transcripts/,然后timeline_transcript→<timeline>.timeline.json/.srt/.txt(时间线时间)。在移动或修剪音频 1 的任何编辑后重新运行此步骤。 - 建议剪切 — 填充词、长时间停顿、错误开头和重拍,包括时间线时间码和每个剪切周围的单词,以表格形式呈现。等待用户批准(全部、部分或调整后的)。
- 应用剪切 — 在 Resolve 中非破坏性地应用(在重复的时间线上,例如
<timeline>_cut),然后重新读取项目并检查间隙/重叠。在新时间线上重新运行步骤 3 的timeline_transcript。 - 叠加层 — 建议锚定在发言单词上的卡片(标题、标注、下三分之一、订阅)。首先从摄像头片段测量面部安全区域。在
animations/中构建一个 HyperFrames 项目(使用hyperframes技能;仅本地渲染),通过render_hyperframes以时间线 fps 渲染带有 alpha 通道的mov,导入,并将每个放置在单词记录帧的空白视频轨道上。重叠的卡片放在单独的轨道上。重新读取并比较。 - 音效 — 叠加层的音效:首先
sfx_search,然后sfx_generate;用户试听;sfx_mark记录结果。使用 ffmpeg 将每个叠加层的声音提示预混成一个 WAV(API 忽略剪辑音量),并将其放置在空白音频轨道上,切勿放在音频 1 上。 - 渲染 —
render prepare_delivery_job(YouTube 1080p/4K,时间线 fps)输出到<project>/renders/,start,verify_output。检查结果的响度。
完成 = 在 <project>/renders/ 中有一个已批准的渲染文件,并保留转录和叠加层项目以备后续更改。