【用途】 该技能用于在 Blender 5.2 中通过 Python 操作视频序列编辑器(VSE)完成视频剪辑,并提供基于 Clip Editor 的相机运动跟踪能力。其执行模型参考 blender-core,3D 镜头渲染与合成器(5.0 API)属于 blender-rendering。
【主要能力】
- 一键剪辑:scripts/vse_edit.py 接收剪辑列表(影片、单帧、帧文件夹、#### 序列)、交叉淡化帧数、标题、音频文件与输出路径,可加 --render 直接渲染。示例: scripts/vse_edit.py -- --clips //renders/sh010/ //renders/sh020/ //logo.png --crossfade 12 --title "Project" --audio //music.wav --out //edit.mp4 --render scripts/vse_edit.py -- --clips a.mp4 b.mp4 c.mp4 --crossfade 0 --fps 24 --out //review/f_#### --render # 硬切输出 PNG
- 场景隔离:脚本构建独立的 Edit 场景(--scene),不触碰 3D 场景。剪辑放在交替通道 1/2,交叉淡化(CROSS)在 3,标题在 4,剪辑音频在 6/7(影片自带声音条),音乐在 8(按剪辑长度裁剪,并以 --audio-fade 做音量淡出)。
- 素材类型:剪辑可为影片、静止图(--still-seconds)、帧文件夹或 #### 模式;每个交叉淡化与前一剪辑重叠 --crossfade 帧,每次剪切使成片相应变短;重跑会替换之前的剪辑。
- 色彩管理:设为 Standard 视图变换,让素材原样通过(实测 AgX 会把纯红变为 0.86/0.23/0.13);如需调色,应通过 strip 修改器有意进行。
- 输出:.mp4/.mov/.mkv 输出 H.264(CRF high、preset good)+ AAC 192k 立体声;其他路径输出 PNG 帧。5.0+ 需先设 image_settings.media_type = "VIDEO" 再设 file_format = "FFMPEG"。脚本报告文件大小,测试会解码回读(帧数、尺寸)。
- 运动跟踪(track_camera.py,仅实时/MCP 会话):借用最大区域运行 Clip Editor 操作后恢复,在 -b 下会报错。流程为首末帧检测特征、双向跟踪、删除短于 min_frames 的轨迹、求解(自动关键帧,仅在焦距未知时细化焦距)、删除误差超过 max_error 像素的轨迹并重新求解,最后执行 setup_tracking_scene(相机 + Camera Solver 约束、背景素材、帧范围)。合成 40 帧 960×540 推轨测试:56 条轨迹、0.19 px 求解误差、35 mm 焦距精确保留。质量参考:<0.3 px 很好,<0.5 px 良好,>1 px 会滑动。
【使用方式与规则】
- 先匹配帧率(--fps 设为素材/渲染帧率),混帧率会导致音频漂移,应重渲染或用 SPEED 效果重定时。
- 重素材建代理(strip.use_proxy = True,25/50%,sequencer.rebuild_proxy);5.2 只构建代理,不再有 .blen_tc 时间码文件。
- 逐 strip 色彩空间:strip.colorspace_settings.name(8 位视频用 sRGB,EXR 渲染用 Linear Rec.709);独立剪辑场景可隔离 3D 色彩设置。
- 5.2 API:strips.new_movie(..., stream=N) / new_sound(stream=N) 可从多轨文件选流;strip.connections 列出相连 strip;新增效果类型 COMPOSITOR(节点树效果);文本 strip 在 UI 有 Subtitles / Main Title / Corner Title 预设;时间使用 left_handle/right_handle/duration(5.1 命名);strip 关键帧存于场景 action。
- 跟踪时应尽量给出焦距/传感器;先设传感器再设焦距(焦距以像素存储),求解器比细化焦距时稳定得多;纯旋转摇镜用 tripod=True,无视差时普通求解会失败。
- 求解后在 UI 的 Clip Editor 上下文定向场景:选 3 条地面轨迹 → clip.set_plane(plane="FLOOR"),1 条 → clip.set_origin(),相距已知距离的 2 条 → clip.set_scale(distance=…),否则缩放与朝上方向任意。
- 其他用途:屏幕/招牌替换用 clip.create_plane_track()(平面表面 4+ 轨迹);抖动素材用 2D 稳定(tracking.stabilization.use_2d_stabilization 并添加轨迹);建模用点用 clip.bundles_to_mesh()。
【拍摄建议】 快快门(少运动模糊)、真实视差(移动相机而非只摇镜)、多个深度上的有纹理静态表面、避免卷帘快门甩镜、广角镜头拍摄镜头网格用于标定畸变。
【限制与注意】
- bpy.ops.render.render(animation=True) 仅在 scene.render.use_sequencer 开启且 strip 位于被渲染场景时才渲染序列器;脚本渲染自己的 Edit 场景。
- 删除剪辑会一并删除其效果 strip;循环删除前应先收集名称。
- 图像序列必须连续,缺失帧显示为黑色。
- 运动跟踪需实时会话窗口,后台运行(-b)会报错。
- 收费、价格、平台等信息暂未提供。