关于 scenario-video-editing
这是通过工具模型应用视频效果的 Scenario 技能,涵盖剪辑、缩放、抠像、提取帧和调色,并说明输入格式、按片段计费及异步任务等限制。
主要功能
- 01图像后期效果的视频对应模型
- 02剪辑、拆分、缩放与倒放片段
- 03提取视频帧和音轨
- 04为纯色背景素材进行色键抠像
- 05格式、成本与任务轮询说明
适用场景
- 01调色前先剪短母版片段
- 02为合成移除绿幕或蓝幕
- 03提取片段帧以供检查
- 04调整视频尺寸或重新编码以交付
MCP 相关
该技能介绍通过 model_run 使用 Scenario MCP 工具,并使用 model_schema_get 获取模型参数、用 jobs_wait 等待异步任务。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ scenario-labs/ skills --skill scenario-video-editing安装后在 Claude Code 中输入/scenario-video-editing确认已加载。
详细介绍
场景视频编辑
概述
每种图像后期处理效果都有对应的视频版本,每种效果都是工具模型上的一次 model_run:输入一个片段,设置几个数值,输出一个片段。生成或重塑视频素材、口型同步、配音和升频属于 scenario-video;拼接、合成和为剪辑添加字幕属于 scenario-video-assembly;静态图像对应的技能是 scenario-image-editing。连接和核心循环:scenario。如果这里提到的同级技能不在你可用的技能中,请让用户安装它(npx skills add scenario-labs/skills --skill <name>);若无人值守,则根据工具架构继续操作并指出这一缺失。
对应规则
视频效果的 ID 是图像效果 ID 后加上 -video,其文件字段是 video 而不是 image,并且参数完全相同:model_scenario-postprocessing-lut-video 使用的 lutStyle 枚举和 lutIntensity 与 model_scenario-postprocessing-lut 相同。全部十八种效果都有对应的视频版本,涵盖模糊和色彩校正,以及油画、色调分离和暗角。
有一种对应效果有所不同:Dissolve (Video) 会将片段与一张静态图像 dissolveImage 混合,而不是与第二个片段混合;两个片段之间的交叉淡化属于拼接转场。
快速参考
| 需求 | 模型或查询 |
|---|---|
| 调色或风格化 | filters={"tags": ["Post Processing"]},并将效果名称作为 query |
| 修剪到指定范围 | model_scenario-video-cut(startTime、endTime) |
| 切分为多个片段 | model_scenario-video-split(cutPoints;N 个点会生成 N+1 个片段) |
| 缩放或重新编码 | model_scenario-resize-video |
| 反向播放片段 | model_reverse-video |
| 提取帧、输入帧 | model_scenario-video-to-image-seq、model_scenario-image-seq-to-video |
| 将主体提取为图层 | model_scenario-video-layers-extractor |
| 遮罩、抠图 | 使用用户自己的措辞描述需求并调用 recommend |
| 抠绿幕 | model_scenario-video-chroma-key |
| 提取音轨 | model_scenario-audio-extract |
提取的帧没有索引,且共享同一个 createdAt,因此其顺序仅存在于任务行的 assetIds 中;在编写本文时,该列表返回的顺序曾错乱(已确认的缺陷)。提取器接受一个标量 video;每帧都设置 extractAllFrames: true,而 frameInterval(编写本文时默认值为 24,对 24 fps 的片段来说约为每秒一帧)仅在该标志关闭时生效。确认该行中恰好包含片段 nbFrames 数量的 id(asset_get 会在 frameRate 旁报告该值;数量不足表示有帧丢失,重新排序无法修复),然后,在使用 model_scenario-image-seq-to-video 重新组装或传递帧之前,按该顺序将返回的 id 放入 model_scenario-grid-maker(固定的第一方 id:Scenario 唯一的网格工具;其 images 字段接受 1 到 100 个 id 的数组,单独传入一个 id 会被忽略,但运行仍会成功;超过 100 帧时请分批制成图板或调高 frameInterval;设置 columns,默认值为 3,最多为 20,使每批图板接近正方形),并对照片段的免费 firstFrame、lastFrame 和运动轨迹检查图板;破坏连续性的帧就是顺序错位的帧,修正后的顺序从此以你自己的 id 列表为准。切勿根据列表或时间戳重建顺序;如果预览在图板顺序正确的情况下反向播放,那是组装器的 pingpong 标志所致,而不是顺序问题。
带透明度的抠图结果不能导出为 mp4:在编写本文时,移除背景的模型仅以 WebM 或 ProRes 4444 MOV 格式保留 alpha,因此请从 model_schema_get 读取输出格式枚举,并在计算运行费用前与用户确认容器格式。
效果查询通过 search,并设置 target="models"、public=true。model_scenario- 开头的 id 是常量:每个 id 都是 Scenario 针对相应操作提供的唯一确定性工具,因此发现操作只会重新推导出它。model_reverse-video 不属于该集合,且是在编写本文时发现的:请按名称重新发现它(search 的 query="video reverse")。
为绿幕或蓝幕抠像
在纯色背景前拍摄或生成的视频素材,使用 model_scenario-video-chroma-key,这是固定的第一方 ID:Scenario 唯一的色度抠像工具。没有纯色背景的视频素材则应使用分割任务(见「蒙版、抠像」行)。
- 将
keyColor留空:工具会根据首帧边缘检测绿幕或蓝幕。只有在检测出错颜色时才设置十六进制值。 outputFormat决定 Alpha 通道:用于网页和引擎时选webm(带 Alpha 通道的 VP9,默认值);用于剪辑和合成应用时选mov(带 Alpha 通道的 ProRes 4444)。mp4不带 Alpha 通道,且需要设置backgroundColor,以便在主体后合成纯色背景。- 边缘由五项控制参数调整,可通过
model_schema_get查看:头发和边缘出现绿色边缘或光晕时,使用spillSuppression(默认值为 1,创作时的最大值)和正值的edgeShrink(1 至 2 像素);主体出现孔洞时,降低tolerance(默认值为 0.3);边缘生硬、有锯齿时,调整softness或edgeFeather。 - 输入时长有限制(创作时为 60 秒,详见架构中的
max_duration):请先裁剪。 - 生成用于抠像的视频素材时,请要求视频模型生成平坦、光线均匀的纯绿色背景,不要有阴影,且主体不要穿绿色服装。运动模糊和细发最难抠像,因此请优先检查这些帧。
成本取决于视频片段,因此请先裁剪
视频同类工具的 video 输入带有 cost_impact: true,而图像版本没有:价格取决于视频素材,而非设置。先裁剪到最终使用的帧,再进行调色;dry_run=true 可在运行前估算请求的价格。视频工具的运行时间也会超过 model_run 的等待时限,因此请使用 wait=false 启动,然后调用 jobs_wait,并在返回 pending_job_ids 后再次调用。客户端的 jobs_wait 超时与服务端自身的超时一样无碍:使用相同 ID 再次调用即可,不要认为任务已丢失。
检查不会产生费用:asset_get 会将 firstFrame 和 lastFrame 作为独立的资源 ID 返回,因此可以先用 asset_display 检查调色效果,再继续进行其他计费运行。
相邻工具的字段名称有所不同
- Video Cut 和特效同类工具使用标量
video。Resize Video 则将video作为array: true字段,最多接受一个条目;直接传入 ID 会被静默丢弃。其尺寸字段为像素单位的width和height,两者均可选;只设置其中一个时会保持宽高比。 - 剪切和拆分工具的输出格式字段为
outputFormat,调整尺寸工具则为videoOutputFormat。 - 剪切、拆分和调整尺寸工具的
preserveAudio默认值为 true;特效工具不提供音频字段,会直接保留音轨。 - 枚举值按原样复制,不作重写:一个
lutStyle字符串中包含空格。 - 对视频调用
asset_download时无需提供format:它只转换图像格式。序列工具生成的 GIF 是图像资源,可使用format: "gif";默认的png会将其压平为单帧。
调整尺寸不等于重新取景
没有任何工具模型会重新绘制视频画布。Resize Video 使用 fit:contain(默认值)会将片段放进目标尺寸内;stretch 会强行调整尺寸并造成变形;cover 会填满目标尺寸并居中裁切多余部分。若可以接受丢失画面边缘,cover 是快速获得精确宽高比的方式;但这些方式都无法在保留完整画面的同时,把 16:9 片段变成竖屏画幅。因此,在花费任何费用之前,必须先在两条价格相差一个数量级的方案之间做出选择。
- 生成式重新取景(
query="reframe"、Luma Ray 3.2 Reframe 和 Wan 2.2 Reframe,属于scenario-video范畴)会向画幅外扩绘,并保留完整画面;在这类任务中,它的价格高出许多。分辨率上限可能造成限制:架构可以分别允许竖屏宽高比和最高分辨率档位,但在运行时却拒绝这两者的组合。 - 合成(Video Studio,将画面裁切或添加黑边放到竖屏画布上)成本低,但会丢弃画面宽度或添加黑边;其图层几何参数属于
scenario-video-assembly的契约,而不是一行设置就能解决。
dry_run 只会为负载估价,不会验证负载,因此无论选择哪条方案,都可能为直接失败的运行付费,或得到尺寸完全正确、但合成效果不正确的画面。
实例:调色后的短版剪辑
下面每个 model_run 都使用 wait=false 启动,并在下一步读取其素材前通过 jobs_wait 等待完成。
- 使用
asset_get获取母版,并读取properties.duration,再选择时间点。 - 修剪:使用
model_scenario-video-cut,通过startTime和endTime(单位为秒)指定范围。先修剪,才能降低之后每一步的成本。 - 调整画幅:使用
model_scenario-resize-video,将video设为仅包含一个元素的数组;width和height设为交付尺寸;videoOutputFormat: "mp4"。在这一步通过fit确定画幅,而不是留到后面:边缘可以舍弃时,使用cover得到精确的宽高比;如果必须保留完整画面,则采用上文所述的重新取景方案。 - 调色:先使用
model_schema_get,然后使用对应的 LUT 模型,并将lutIntensity设为接近 0.6。 - 添加纹理:先使用
model_schema_get,然后在该输出上使用对应的 Grain 模型,并设置grainProfile(包含 22 个枚举值;编写时的默认值为kodak_portra_400)。此步骤应放在最后,这样颗粒大小会适配交付画幅,而不会被后续调整尺寸重新采样。 - 使用
asset_display查看结果的firstFrame,确认画面效果,然后使用不带format的asset_download。
常见错误
- 先分别给每个源片段调色,再拼接:应对最终母版一次性调色,否则各个镜头的色调会逐渐偏离。
- 使用本地 ffmpeg,或寻找名为
video_edit的 MCP 工具:实际接口是针对工具模型调用model_run。 - 不断轮询
job_get,而不是使用jobs_wait;超时不代表出错。 - 以为 Grain 配置文件会增加颗粒:这 22 种配置代表不同效果,而不是强度,其中一些反而会柔化画面。请将画面帧与输入进行比较。