节拍同步混剪构建器 是做什么的?
概述
在歌曲已通过 $song-edit-analysis 分析完毕,或已有等效的节拍/剪切标记数据后使用此技能。目标不仅是将片段放在音乐下;剪辑应感觉像是为歌曲精心编排的,主题切换、冲击、人群反应和视觉重音应落在有意义的音乐标记上。
集成效果规则(不可协商,现场学习于2026年7月)
效果和素材绝不能分离。不要在节拍间交替使用全帧效果片段和全帧真实素材——这看起来像是两个视频拼接在一起。每个效果必须锚定于:(a) 主体的遮罩(逐帧人物蒙版——macOS上使用Apple Vision的VNGenerateForegroundInstanceMaskRequest,或同等技术),(b) 场景几何(天空中的传送门、角落固定的屏幕、水面倒影、边缘包裹的光渗),或(c) 镜头自身的像素(实时帧的万花筒/镜像、高光涂抹、帧历史的时间波纹)。程序化渲染作为场景内元素进入镜头——通过天空、屏幕、门道、倒影——绝不作为剪切片段出现。未跟踪的屏幕混合元素看起来像贴纸。相关法则:好看胜过遵循参数(宁愿重构也不交付连贯性失败);每个剪辑使用一种效果语言,随歌曲结构升级——每个镜头一种一次性效果会破坏连贯性;每个镜头上丰富、扎实的调色(纯粹的克制看起来洗白且无聊;有效公式是丰富的密集调色加上每个镜头一次硬性现实弯曲)。对于情感分享类片段,偏好单个连续镜头,带有光度变换(歌曲包络驱动的渐变调色/光照到来/光芒绽放)——从构造上杜绝接缝。
合成陷阱:屏幕混合必须在RGB(format=gbrp)中运行——在YUV中,黑色的色度为128,屏幕混合会导致画面磁化。使用RGB lutrgb 乘以来做不透明度。
剪切引擎
两个时钟,按轨道选择:
- 起音点锁定(能量/留存轨道首选):
librosa.onset.onset_detect(onset_envelope=onset_strength(...), hop_length=512, backtrack=False, delta=0.02, units="time");合并间隔小于0.13秒的起音点,保留强度较高的;量化int(round((t-t0)*FPS));强制帧0;在每个存活的起音点上剪切——稀疏时保持,密集时爆发;在顶部四分之一强度的起音点上做放大强调。需要深度素材池(约60+个筛选镜头)。优先于密度预设。 - 标记/优先级驱动(本工具原始引擎): 按照下面的优先级表在主/次标记上剪切——仍适用于横屏游戏录像剪辑和中等密度剪辑。
- 将任何估算的节拍网格与真实检测到的起音点对齐(在60毫秒内);对于风格切换/变换时刻,使用向下取整而不是四舍五入,以便变化落在包含瞬态的帧上。
构建架构
- 分片渲染 → 拼接 → 后处理图(仅ffmpeg): 每个镜头的MP4,带有覆盖裁剪(
scale=W:H:force_original_aspect_ratio=increase:flags=lanczos,crop=W:H,HDR源先色调映射到bt709,tpad=stop_mode=clone冻结延长短片段——绝不缩短音乐网格),concat解复用器-c copy,一个filter_complex内部调色(eq=contrast=1.05:saturation=1.08,暗角,通过noise=alls=5:allf=t+u添加胶片颗粒),最后混入音频并加淡入淡出。 - 逐帧NumPy管道(逐像素集成效果): 解码ffmpeg→rawvideo rgb24→numpy循环→编码ffmpeg stdin,CRF 17。经验证的遮罩管道:渲染干净的调色版
base.mp4(锁定剪辑)→ 基于base生成人物遮罩 → 根据每帧效果表驱动效果 → 混入原始音频。同步完美保证。 - 着色器内融合(moderngl GLSL): 素材解码到纹理中,程序化世界在同一个片段着色器中渲染,通过
--cuts传递剪辑点,使其作为着色器内的扭曲冲击落下。最深的集成;参见$generated-media-sourcing获取渲染器框架。
输入
优先使用以下输入:
- 音频文件或一个片段窗口。
- 来自
$song-edit-analysis的*_cut_markers_30fps.csv。 - 素材来源或包含片段路径、类别、权重和使用说明的素材清单。
- 来自
$generated-media-sourcing的生成媒体清单或生成资产文件夹(当用户要求生成片段/图像或素材不完整时)。 - 期望格式:
9:16、16:9,或两者。 - 目标时长,通常社交媒体音视频剪辑为
30-40秒。
如果还没有剪切标记CSV,请先运行 $song-edit-analysis。
工作流
- 在渲染前选择音乐窗口。利用歌曲分析选择一个高能量或叙事连贯的
30-40秒区间。 - 盘点素材。使用
scripts/scan_video_sources.py对候选视频的运动、光泽、亮度、饱和度和推荐开始时间进行评分。 - 如果缺少真实素材或用户要求生成媒体,在最终源映射之前使用
$generated-media-sourcing创建或规划生成的片段和静态图像。 - 创建素材分类。常见类别:
gameplay(游戏玩法)、crowd(人群)、real_laser(真实激光)、photos_festival(音乐节照片)、photos_nature(自然照片)、character_select(角色选择)、menu(菜单)、reaction(反应)、product(产品)、broll(B-roll)、generated_video(生成视频)、generated_still(生成静态)。 - 从相邻的剪切标记构建片段计划。跳过大约
0.17秒以下的微片段,除非曲目确实需要断奏剪辑。 - 将素材强度与标记优先级匹配:
- 优先级1-2:置景、上下文、保持、柔和运动。
- 优先级3:中等动作、角度变化、有节奏的B-roll。
- 优先级4:活跃运动、快速剪辑、反应回答。
- 优先级5:最佳冲击、揭露、击倒、人群打击、激光闪光。
- 使用重音作为标点,而不是填充。真实激光、人群欢呼、自然闪光、菜单时刻、生成图像和抽象灯光应放大乐句转折、军鼓、填充和下降。
- 渲染片段,拼接,附加干净的音频片段,然后输出:
- 最终视频
- 时间线CSV
- 联系表
- 包含来源组合、类型组合、尺寸、音乐窗口和创作意图的简报JSON
- 在宣布剪辑完成之前运行
$edit-delivery-qa。
渲染模式
对于包含横屏素材的竖屏剪辑,保持主要动作可读:
- 使用同一素材的全屏模糊/增强背景。
- 将清晰的前景居中叠加,保持稳定的缩放和Y轴位置。
- 仅在必要时添加微妙的顶部/底部分隔线。
- 避免丢失舞台、发射方向、面部或重要UI的紧竖屏裁剪。
对于全屏重音素材:
- 缩放/裁剪以填充交付格式。
- 提高对比度/饱和度以便快速识读。
- 保持激光/音乐节/反应重音短小:通常
2-12帧或一个节拍。
对于横屏游戏剪辑:
- 保持全帧动作可见。
- 优先使用
1920x1080,最低30fps。 - 在高能量部分使用快速单节拍剪辑,但保持源素材的可读性。
素材选择规则
优先选择明显的屏幕上动作:冲击、碰撞、尖刺、揭露、快速连击串、表情丰富的反应或高运动亮光时刻。
将爆发性的人类反应镜头保留用于重大冲击后的呼应与响应。不要自动拒绝仅有人群的素材;只拒绝微弱、缓慢或视觉上扁平的反应。
尽可能使用真实素材用于最终的激光/音乐节重音。生成的占位符可用于探索,但应在最终交付前替换为真实来源(如果存在)。
拒绝或大幅降低优先级:标题卡、访谈、无明显作用的菜单、空白舞台、平坦的板、过度裁剪的动作以及高峰部分的低运动置景。
生成的片段和静态图像必须在时间线/简报输出中标记为 generated_video 或 generated_still,附上使用的提示词,以及资产状态为 final_ok、replace_if_real_source_found 或 placeholder_only。
时序启发式
- 使用主标记进行硬切、主题切换、冲击、揭露和速度斜线落地。
- 使用次标记进行延续剪辑、角度变化、小B-roll切换和速度斜线开始。
- 在高能量部分,平均片段长度约
0.35-0.50秒适用于密集的社交媒体混剪。 - 对于
35秒的音视频剪辑,70-90个片段是一个强有力的目标(当源素材支持时)。 - 将最强的素材保留给最高能量的部分;不要在置景阶段用完所有峰值素材。
竖屏音乐视频模式(2026年7月)
对于9:16音乐推广(与Smash模式并列的较新轨道):始终1080×1920@30;无缝循环结尾(光度状态在最后约22帧内返回到帧0);钩子文本带第二行动态(第1行在帧0静态,第2行在节拍融合出现,在±100ms内贴合真实起音点,在0.8-1.3秒);要么是Sweeps风格容器(黑色画布、居中素材窗口、上方等宽钩子、下方信用信息),要么是全屏电影风格。在稳定基础设施上迭代编号版本——仅在版本之间更改效果语言;当客户喜欢一个2秒的时刻时,让那个时刻成为下一版本的整体语言。
来自Conteto Machino的项目模式
来自Smash Mash项目的可复用形状:
- 音乐窗口:大约
52.98秒-88.17秒,一个35.19秒的高能量片段。 - 密集的标记驱动剪辑:大致每个节拍或主要标记对应一个片段。
- 主要游戏玩法/动作占主导。
- 人群、真实激光、自然和菜单/源上下文时刻作为简短标点出现。
- 交付物包括最终MP4、联系表、时间线CSV和简报JSON文件。
有关详细标准,请阅读 references/conteto-edit-standard.md。
可选参考:
references/example-prompts.md:用于未来编辑任务的可复用提示。references/file-schemas.md:灵活的时间线CSV和简报JSON形状。references/render-recipes.md:从该项目改编的FFmpeg/布局配方。references/gui-vision.md:未来图形工作流的产品愿景。
脚本
当需要可复用的素材清单时,使用 scripts/scan_video_sources.py:
python3 scripts/scan_video_sources.py /path/to/videos --out /path/to/source_inventory
它写入一个CSV和JSON,包含媒体时长、粗略运动/光泽分数和推荐的开始时间。使用输出来构建素材池,并防止反复从相同的死寂时刻剪辑。