video-organize 是做什么的?
在video-setup之后、video-assemble之前运行。无需时间线,可在Resolve关闭时工作。需要旁边安装resolve-bridge技能(或设置RVS_BRIDGE)、ffmpeg以及uv(用于本地Whisper)或RVS_TRANSCRIBE_CMD中的转录命令。
以python3 <本技能文件夹>/scripts/organize.py --workdir <文件夹> <命令>方式运行脚本。
故事板格式
纯Markdown,每个场景一块。场景ID来自标题。
## S01
Setup: counter top
Let me start with a confession: AI helped me plan this video.
## S03
Voiceover: yes
B-roll: showing AI researching something funny
Setup、Voiceover和B-roll是可选的。块中的其他所有内容都是口播文本。仅包含B-roll:的块是纯B-roll场景。没有标题的纯脚本将每个段落视为一个场景。如果没有故事板,镜头按相似文本分组(G01、G02),在TAKES.md顶部会有警告,并且不会进行针对脚本的评分或重命名提议。
工作流
- 设置检查。 运行
video-setup的check。如果没有记录故事板,它会发出警告,并且.edit/config.json中应包含storyboard、approve_phrases和reject_phrases(旧的phrases列表仅作为注释显示:询问哪些短语是批准、哪些是拒绝的,并用setup.py write保存)。 - 先计数。 询问素材文件夹,然后:
不加python3 scripts/organize.py --workdir <folder> run --footage <footage folder> [--storyboard FILE] [--every 2]--yes会打印计数结果(录音数、时长、场景数)并停止。与用户确认文件夹是否正确。 - 运行。
转录(已转录且未更改的录音将被跳过)、查找并评分镜头、提取B-roll帧、写入python3 scripts/organize.py --workdir <folder> run --footage <footage folder> --yesTAKES.md并记录问题(无可用镜头的场景、未拍摄的B-roll、无人能修补的破损片段)。 - 你的部分:描述B-roll。 运行后会列出每个B-roll录音的一个帧文件夹(每样一个JPEG,第N帧位于N x
every秒处)。对于每个文件夹:- 打开帧,按时间戳描述屏幕上显示的内容;
- 将描述匹配到故事板的
B-roll:备注:场景、开始时间、结束时间及原因; - 写入负载,然后记录它:
{"<recording path>": {"frames": {"0": "a person typing", "2": "close-up of a screen"}, "matches": [{"scene": "S04", "start": 2, "end": 6, "why": "screen close-up"}]}}python3 scripts/organize.py --workdir <folder> describe payload.json
- 你的部分:镜头字母问题。 当运行无法判断一个场景的两个文件是否为同一机位设置时,它会列出一个带有帧差异的问题。询问用户,然后记录每个答案:
python3 scripts/organize.py --workdir <folder> answer S02 <file> B - 显示
TAKES.md。 每个场景一个章节,首先是推荐的镜头、其评分和原因、补丁(标记有两个镜头ID,始终是一个建议)、未匹配的剪辑以及无镜头的场景。向用户朗读问题。 - 修正。 当用户偏好另一个镜头时("use S02A-T03"):
用户的选取在重新运行时保留。python3 scripts/organize.py --workdir <folder> pick S02A-T03report重新写入TAKES.md而不更改其他内容。 - 重命名。 由
organize.py rename提供(先显示提议,仅在用户批准完整列表后使用--apply,--undo可撤销)。显示完整的旧名到新名列表,并且仅在明确同意时应用。绝不以任何其他方式重命名。已放置在打开的Resolve项目时间线上的剪辑会被跳过并列出原因,因为重新链接已使用的剪辑可能会丢失其剪切和调色;如有必要,请在Resolve中手动重命名这些剪辑。如果项目包含复合剪辑、多机位剪辑或Fusion剪辑(其内容无法列出),则每个导入的剪辑都会被跳过。--apply会应用上次显示的提议,如果提议发生变化则拒绝。在Resolve关闭时,--apply和--undo需要--never-imported(素材从未被导入);如果Resolve处于打开状态,仍会检查已使用的剪辑。 - 完成。 运行本身会记录组织步骤,因此没有其他需要记录的内容。指向
video-assemble(尚未构建)作为下一步。
名称
| 情况 | 名称 |
|---|---|
TAKES.md中的镜头ID | S02A-T03 |
| 包含一个镜头的文件 | S02A_T03_IMG_5419.MOV |
| 包含同一镜头多个镜次的文件 | S02A_T01-T03_IMG_5420.MOV |
| 包含多个场景的文件 | S03A_S05A_S06A_IMG_5422.MOV |
| 场景的第二个机位设置 | S02B_T01_IMG_5430.MOV |
每个镜头都有一个字母。不同字母表示不同的机位设置,而不是重拍。B-roll和未匹配的文件保留原名。
规则
- 原始素材不会被移动或覆盖。只有通过批准的
rename才能重命名。 - 评分范围为0到100,并始终显示原因。现场拒绝的优先级高于评分,批准的优先级最高。画外音场景主要根据声音进行判断。
- 补丁在自然停顿处至少替换一个完整的概念剪辑,绝不替换单个单词。
- 工作文件存放在
<文件夹>/.edit/organize/中(不要手动编辑)。video-assemble仅读取这些文件。