scenario-video-editing
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseScenario Video Editing
Scenario 视频编辑
Overview
概述
Every image post-processing effect has a video twin, and each is a on a tool model: one clip in, a few numbers, one clip out. Generating or restyling footage, lipsync, dubbing and upscaling are ; concatenating, compositing and captioning a cut are ; the still-image side is . Connection and the core loop: . If a sibling skill named here is missing from your available skills, ask the user to install it (); unattended, proceed from tool schemas and flag the gap.
model_runscenario-videoscenario-video-assemblyscenario-image-editingscenarionpx skills add scenario-labs/skills --skill <name>每个图像后处理效果都有对应的视频版本,且每个效果都是工具模型上的一次:输入一个视频片段,调整若干参数,输出一个视频片段。生成或重制素材风格、口型同步、配音和超分辨率属于范畴;拼接、合成和为剪辑添加字幕属于范畴;静态图像编辑则对应。连接与核心循环:。如果你的可用技能中缺少此处提到的同类技能,请让用户安装(命令:);若处于无人值守模式,则从工具schema开始执行并标记缺失项。
model_runscenario-videoscenario-video-assemblyscenario-image-editingscenarionpx skills add scenario-labs/skills --skill <name>The twin rule
孪生规则
A video effect's id is the image id with appended, its file field is rather than , and the knobs are identical: takes the same enum and as . All eighteen have twins, from blur and color correction through oilify, posterize and vignette.
-videovideoimagemodel_scenario-postprocessing-lut-videolutStylelutIntensitymodel_scenario-postprocessing-lutOne twin differs: Dissolve (Video) blends the clip with a still , not a second clip; crossfading two clips is a concat transition.
dissolveImage视频效果的ID是对应图像效果ID后追加,其文件字段为而非,且可调参数完全一致:与使用相同的枚举值和参数。从模糊、色彩校正到油画效果、色调分离、暗角,全部18种效果都有对应的视频版本。
-videovideoimagemodel_scenario-postprocessing-lut-videomodel_scenario-postprocessing-lutlutStylelutIntensity有一个孪生效果是例外:Dissolve(视频版)是将片段与静态的混合,而非与另一个片段混合;两个片段的交叉淡入淡出属于拼接转场效果。
dissolveImageQuick reference
快速参考
| Need | Model or query |
|---|---|
| Grade or stylize | |
| Trim to a range | |
| Cut into segments | |
| Rescale or re-encode | |
| Play a clip backwards | |
| Frames out, frames in | |
| Subjects as layers | |
| Masks, cutouts | |
| Pull the audio track | |
Extracted frames carry no index and share one , so their order exists only in the job row's , and that list has come back out of time order (a confirmed defect at authoring time). The extractor takes a scalar ; every frame is , and (default 24 at authoring time, about one frame a second on a 24 fps clip) applies only when that flag is off. Check that the row holds exactly the clip's ids ( reports it beside ; a short row is a dropped frame, which no reordering fixes), then, before reassembling with or handing frames on, lay the returned ids into in that order (a fixed first-party id: Scenario's single grid tool; its field takes an array of 1 to 100 ids and ignores a bare id while the run still succeeds, so past 100 frames sheet in batches or raise ; set , default 3 and up to 20, so a batch reads as a near-square sheet) and read the sheet against the clip's free and and its motion; a frame that breaks continuity is out of place, and the corrected order travels as your own id list from then on. Never rebuild order from listings or timestamps, and a preview that runs backwards on a clean sheet is the assembler's flag, not the order.
createdAtassetIdsvideoextractAllFrames: trueframeIntervalnbFramesasset_getframeRatemodel_scenario-image-seq-to-videomodel_scenario-grid-makerimagesframeIntervalcolumnsfirstFramelastFramepingpongA cutout with transparency never ships as mp4: at authoring time the removal models carried alpha only as WebM or ProRes 4444 MOV, so read the output-format enum off and agree the container with the user before pricing the run.
model_schema_getEffect lookups go through , , . The ids are constants: each is Scenario's single deterministic tool for its operation, so discovery would only re-derive it. sits outside that set and is an authoring-time hit: re-discover it by name ( ).
searchtarget="models"public=truemodel_scenario-model_reverse-videosearchquery="video reverse"| 需求 | 模型或查询 |
|---|---|
| 调色或风格化 | |
| 裁剪到指定时间范围 | |
| 切割为多段 | |
| 缩放或重新编码 | |
| 倒放片段 | |
| 帧提取与帧合成 | |
| 将主体作为图层 | |
| 蒙版、抠图 | 使用 |
| 提取音轨 | |
提取的帧没有索引,且共享同一个时间戳,因此它们的顺序仅存在于任务行的中,而该列表返回时并非按时间顺序排列(这是编写本文时已确认的缺陷)。提取器接收一个标量参数;当时会提取所有帧,而(编写本文时默认值为24,对于24fps的片段约为每秒一帧)仅在该标志为关闭状态时生效。
createdAtassetIdsvideoextractAllFrames: trueframeInterval请检查任务行中的ID数量是否与片段的完全一致(会在旁返回该值;如果行长度不足说明有丢帧,这是重排无法解决的问题)。然后,在使用重新合成或交付帧之前,将返回的ID按顺序传入(这是一个固定的官方ID:Scenario唯一的网格工具;其字段接收1到100个ID组成的数组,若传入单个裸ID会被忽略但任务仍会成功,因此超过100帧时需要分批处理或增大;设置参数,默认值为3,最大为20,这样一批帧会以接近正方形的网格形式呈现),并结合片段的、及其运动规律来核对网格中的帧;如果某一帧破坏了连续性,说明它的位置不对,之后就使用你自己整理好的正确ID顺序。绝对不要通过列表或时间戳重建顺序,另外,如果在正确排列的网格上预览出现倒放的情况,是合成器的标志导致的,而非顺序问题。
nbFramesasset_getframeRatemodel_scenario-image-seq-to-videomodel_scenario-grid-makerimagesframeIntervalcolumnsfirstFramelastFramepingpong带透明度的抠图结果绝对不会以mp4格式输出:编写本文时,抠图模型仅支持WebM或ProRes 4444 MOV格式携带alpha通道,因此请通过读取输出格式枚举值,并在为任务定价前与用户确认容器格式。
model_schema_get效果查询通过接口进行,参数为、。以开头的ID都是常量:每个ID对应Scenario中执行该操作的唯一确定性工具,因此发现操作只会重新推导出相同的ID。不在这个集合中,是编写本文时的热门工具:可通过名称重新发现它(的)。
searchtarget="models"public=truemodel_scenario-model_reverse-videosearchquery="video reverse"Cost follows the clip, so trim first
成本由片段决定,因此先裁剪
On the video twins the input carries , which the image versions do not: price tracks the footage rather than the settings. Trim to the frames that ship, then grade; prices a payload before it runs. Video tools also outlast 's wait window, so launch with and follow with , re-calling it with the returned . A client-side timeout on is as harmless as the server's own: re-call it with the same ids rather than treating the job as lost.
videocost_impact: truedry_run=truemodel_runwait=falsejobs_waitpending_job_idsjobs_waitChecking costs nothing: returns and as their own asset ids, so one to confirm a grade before chaining another billable run onto it.
asset_getfirstFramelastFrameasset_display在视频孪生效果中,输入带有属性(图像版本则没有):价格由素材时长而非设置决定。先裁剪到最终需要的帧范围,再进行调色;设置可在运行前计算任务的价格。视频工具的运行时间也会超过的等待窗口,因此请使用启动任务,然后调用,传入返回的进行轮询。的客户端超时和服务端超时一样都不会造成问题:使用相同的ID重新调用即可,不要认为任务已经丢失。
videocost_impact: truedry_run=truemodel_runwait=falsejobs_waitpending_job_idsjobs_wait检查是免费的:会将和作为独立的资产ID返回,因此可以用查看其中一帧来确认调色效果,然后再串联下一个付费任务。
asset_getfirstFramelastFrameasset_displayField names drift between neighbors
相邻工具的字段名差异
- Video Cut and the effect twins take a scalar . Resize Video takes
videoas anvideofield capped at one item, where a bare id is dropped silently; its size isarray: trueandwidthin pixels, both optional, and one alone keeps the aspect ratio.height - The output format field is on cut and split,
outputFormaton resize.videoOutputFormat - defaults to true on cut, split and resize; the effects expose no audio field and pass the track through.
preserveAudio - Enum values are copied, not retyped: one string contains a space.
lutStyle - takes no
asset_downloadfor a video: it converts image formats only. A GIF from the sequence tool is an image asset and takesformat; theformat: "gif"default flattens it to one frame.png
- 视频裁剪(Video Cut)和效果孪生工具接收标量参数。视频缩放(Resize Video)的
video字段是video类型,最多包含1个元素,若传入单个裸ID会被静默丢弃;其尺寸参数为像素单位的array: true和width,两者都是可选的,仅设置一个时会保持宽高比。height - 输出格式字段在裁剪和分割工具中是,在缩放工具中是
outputFormat。videoOutputFormat - 在裁剪、分割和缩放工具中默认值为true;效果类工具不提供音频相关字段,会直接透传音轨。
preserveAudio - 枚举值是直接复制的,而非重新定义:有一个的字符串值包含空格。
lutStyle - 对于视频不接受
asset_download参数:它仅支持转换图像格式。序列工具生成的GIF属于图像资产,可使用format参数;默认的format: "gif"格式会将其扁平化为单帧。png
Resizing is not reframing
缩放不等于重构图
No tool model repaints a video's canvas. Resize Video takes : (default) fits the clip inside the target, forces the size and distorts, fills the target and center-crops the rest. is the cheap way to an exact ratio when losing the edges is acceptable, but none of them gives a 16:9 clip a vertical frame with the whole picture kept, so that brief needs a decision before any spend, between two routes an order of magnitude apart in price.
fitcontainstretchcovercover- Generative reframe (, Luma Ray 3.2 Reframe and Wan 2.2 Reframe,
query="reframe"territory) outpaints past the frame and keeps the whole picture, at by far the highest price in such a job. Resolution ceilings bite: a schema can allow a vertical ratio and its top resolution tier separately yet reject the pair at run time.scenario-video - Compositor (Video Studio, cropping or pillarboxing onto a vertical canvas) is cheap but throws away width or adds bars, and its layer geometry is 's contract rather than a one-line setting.
scenario-video-assembly
dry_run没有任何工具模型会重绘视频的画布。视频缩放工具支持参数:(默认值)将片段适配到目标尺寸内,强制拉伸到目标尺寸(会导致变形),填充目标尺寸并对超出部分进行中心裁剪。如果可以接受边缘被裁剪,是获得精确比例的低成本方式,但这三种模式都无法在保留完整画面的前提下将16:9的片段转为竖屏格式,因此这类需求在产生任何费用前需要先确定方案,两种可选方案的价格相差一个数量级。
fitcontainstretchcovercover- 生成式重构图(,包括Luma Ray 3.2 Reframe和Wan 2.2 Reframe,属于
query="reframe"范畴)通过外绘扩展画面边界,保留完整画面,是这类任务中价格最高的方案。分辨率上限会带来限制:schema可能单独允许竖屏比例和最高分辨率档位,但在运行时会拒绝两者的组合。scenario-video - 合成器(Video Studio,在竖屏画布上裁剪或添加上下黑边)成本较低,但会损失画面宽度或添加黑边,其图层几何设置属于的约定内容,而非单行参数设置。
scenario-video-assembly
dry_runWorked example: a graded cutdown
示例:带调色的精简剪辑
Launch every below with and retire it with before the next step reads its asset.
model_runwait=falsejobs_wait- the master and read
asset_getbefore choosing times.properties.duration - Trim: with
model_scenario-video-cutandstartTimein seconds. Going first is what makes every later step cheaper.endTime - Reshape: ,
model_scenario-resize-videoas a one-item array,videoandwidthat the delivery size,height.videoOutputFormat: "mp4"settles the shape at this step rather than later:fitlands an exact ratio once the edges are spendable, and a shape that has to keep the whole picture is the reframe decision above.cover - Grade: , then the LUT twin with
model_schema_getnear 0.6.lutIntensity - Texture: , then the Grain twin with
model_schema_get(a 22-value enum, defaultgrainProfileat authoring time) on that output, last, so its grain is sized for the delivered frame rather than resampled by a later resize.kodak_portra_400 - the result's
asset_displayto confirm the look, thenfirstFramewith noasset_download.format
以下所有都使用启动,并在下一步读取其资产前通过等待任务完成。
model_runwait=falsejobs_wait- 调用获取主素材信息,读取
asset_get后再选择时间范围。properties.duration - 裁剪:使用,参数为秒级的
model_scenario-video-cut和startTime。先做裁剪能降低后续所有步骤的成本。endTime - 调整尺寸:使用,
model_scenario-resize-video参数为单元素数组,video和width设置为交付尺寸,height。videoOutputFormat: "mp4"参数在这一步就确定了画面形状,而非后续步骤:如果可以接受边缘被裁剪,fit可以得到精确的比例;如果必须保留完整画面,则需要采用上文提到的重构图方案。cover - 调色:调用,然后使用LUT的视频孪生版本,
model_schema_get设置在0.6左右。lutIntensity - 添加质感:调用,然后在调色后的输出上使用Grain(胶片颗粒)的视频孪生版本,参数为
model_schema_get(一个有22个值的枚举,编写本文时默认值为grainProfile)。这一步放在最后,这样颗粒的大小是适配最终交付帧的,而不会被后续的缩放重新采样。kodak_portra_400 - 用查看结果的
asset_display确认效果,然后使用不带firstFrame参数的format下载。asset_download
Common mistakes
常见错误
- Grading each source clip and then concatenating: grade the finished master once, or the shots drift apart.
- Reaching for local ffmpeg, or for an MCP tool named : the surface is
video_editon tool models.model_run - Polling in a loop instead of
job_get, whose timeout is not an error.jobs_wait - Trusting a Grain profile to add grain: the 22 profiles are looks, not intensities, and some soften the picture instead. Compare a frame against the input.
- 先对每个源片段调色再拼接:应该对最终的完整素材只做一次调色,否则不同镜头的色调会不一致。
- 试图使用本地ffmpeg,或者名为的MCP工具:实际操作入口是工具模型上的
video_edit。model_run - 循环调用轮询而非使用
job_get:jobs_wait的超时并不是错误。jobs_wait - 误以为Grain配置文件只是添加颗粒:这22个配置文件是不同的风格效果,而非不同的颗粒强度,有些反而会让画面变柔和。请将输出帧与输入帧对比确认。