智能高光剪辑
本文介绍基于大模型的高光剪辑(顺剪与混剪)解决方案及其API调用方式。该解决方案可面向游戏、教育、短剧、直播等场景,从整集或多集素材中自动规划并导出高光剪辑,助力您低成本、规模化地生产投放素材。
背景
在游戏、教育、短剧、直播等内容行业快速增长的背景下,投放素材的生产效率成为内容分发的核心瓶颈。传统人工剪辑高光片段依赖大量重复劳动,难以覆盖多语种、多版本、多平台的批量需求。
高光剪辑能力基于大模型对剧情、镜头与语音的联合理解,提供端到端的自动成片解决方案,支持顺剪(CONTINUOUS)和混剪(STORY_CUT)两种模式。您只需提供源视频与选材偏好,服务端即可自动完成候选召回、时间线规划、边界校验与视频渲染,输出可直接投放的完整成片。
使用限制
-
单个输入视频时长最长3600秒,单个任务的输入总时长最长14400秒。
-
输入视频必须同时包含可解码的视频流和音频流;静音视频会以
MEDIA_INVALID失败。 -
时间字段对外统一使用秒;
index和media_index均从0开始。 -
本期混剪不支持倒叙、片段自由重排和角色库能力。
功能介绍
高光剪辑任务均为异步任务,统一位于算子服务/api/v1/operators/highlight-editing路径下。任务提交后返回任务ID,您需通过查询接口轮询任务状态并获取成片结果。两种成片模式均由大模型完成规划,服务端校验时间线后使用FFmpeg导出。
顺剪(CONTINUOUS)
顺剪从开场钩子出发,沿原剧情持续向后推进,仅跳过由模型标记且通过镜头边界校验的包装范围,保留原始叙事顺序。该模式适用于将整集内容压缩为节奏更紧凑的连续版本。
使用顺剪时,per_media_target_duration必须为null、require_all_media必须为false。
混剪(STORY_CUT)
混剪在多个来源视频之间进行跨片段选材与拼接,media_index保持非递减、同一来源视频内时间保持非递减。该模式适用于将多集素材重组为高信息密度的高光合集。
混剪支持通过per_media_target_duration控制每个视频的软目标贡献时长,并可通过require_all_media要求每条成片覆盖全部输入。
功能使用
提交高光剪辑任务
-
请求方法:
POST -
请求路径:
/api/v1/operators/highlight-editing/tasks -
生成顺剪
CONTINUOUS或混剪STORY_CUT成片。两种模式均由大模型规划,服务端校验时间线并使用FFmpeg导出。
请求参数
|
参数 |
类型 |
是否必填 |
默认值 |
说明 |
|
media_inputs |
array |
是 |
- |
输入视频列表,数量1~20;数组顺序表示剧情顺序。 |
|
media_inputs[i].uri |
string |
是 |
- |
输入视频地址,支持HTTP、HTTPS或OSS URI。 |
|
highlight_description |
string |
否 |
通用短剧高光标准 |
整体选材要求,最长2000字符。 |
|
editing.mode |
string |
是 |
- |
成片模式,取值 |
|
editing.output_count |
integer |
否 |
3 |
最大成片数,范围1~10;实际数量可少于该值。 |
|
editing.target_duration |
number |
否 |
120 |
单条成片软目标总时长,单位秒。 |
|
editing.per_media_target_duration |
number/null |
否 |
null |
每个视频的软目标贡献时长,仅 |
|
editing.require_all_media |
boolean |
否 |
false |
每条成片是否必须覆盖全部输入,仅 |
|
editing.opening_hook.description |
string/null |
否 |
null |
开场钩子偏好,最长2000字符。 |
|
editing.opening_hook.target_duration |
number |
否 |
10 |
钩子目标时长,必须小于成片目标时长。 |
|
output.need_export |
boolean |
否 |
true |
是否渲染并上传完整成片。 |
|
output.oss |
object |
否 |
平台临时OSS |
客户OSS输出配置; |
|
output.oss.region |
string |
使用OSS时是 |
- |
客户OSS Region ID,如 |
|
output.oss.bucket |
string |
使用OSS时是 |
- |
客户OSS Bucket。 |
|
output.oss.object_key |
string |
使用OSS时是 |
- |
必须且只能包含 |
调用示例
{
"media_inputs": [
{"uri": "https://media.example.com/episode-01.mp4"},
{"uri": "https://media.example.com/episode-02.mp4"}
],
"highlight_description": "优先选择视觉冲击强、人物张力明显的剧情",
"editing": {
"mode": "STORY_CUT",
"output_count": 2,
"target_duration": 120,
"per_media_target_duration": 60,
"require_all_media": false,
"opening_hook": {
"description": "优先选择动作正在升级的瞬间",
"target_duration": 10
}
},
"output": {
"need_export": true,
"oss": {
"region": "cn-shanghai",
"bucket": "customer-bucket",
"object_key": "highlight-edits/{task_id}/output_{index}.mp4"
}
}
}
响应示例
{
"status": "SUCCESS",
"message": null,
"data": {"task_id": "1720000000000_efgh", "task_status": "PENDING"}
}
其中,status为API调用状态,默认SUCCESS;message为错误信息,成功时为null;data.task_id为任务ID;data.task_status为异步任务状态,默认PENDING。
cURL 示例
curl -X POST 'http://{endpoint}/api/v1/operators/highlight-editing/tasks' \
-H 'Content-Type: application/json' \
-d '{
"media_inputs": [{"uri": "https://media.example.com/episode-01.mp4"}],
"editing": {
"mode": "CONTINUOUS",
"output_count": 1,
"target_duration": 120,
"opening_hook": {"target_duration": 10}
},
"output": {"need_export": false}
}'
HTTP状态码
|
状态码 |
说明 |
|
200 |
任务提交成功。 |
|
400 |
模式与参数组合错误, |
|
422 |
缺少字段或字段类型/范围错误, |
|
500 |
服务内部错误。 |
查询高光剪辑任务
-
请求方法:
GET -
请求路径:
/api/v1/operators/highlight-editing/tasks/{task_id} -
查询顺剪或混剪任务状态、开场钩子、来源时间线和完整成片地址。查询失败任务时HTTP仍返回200,并在
data.error中返回异步错误。
请求参数
|
参数 |
类型 |
是否必填 |
默认值 |
说明 |
|
task_id |
string |
是 |
- |
提交接口返回的任务ID,位于Path中。 |
响应参数
|
字段 |
类型 |
是否必返回 |
默认值 |
说明 |
|
data.task_id |
string |
是 |
- |
任务ID。 |
|
data.task_status |
string |
是 |
- |
异步任务状态,取值 |
|
data.mode |
string/null |
否 |
- |
成片模式,取值 |
|
data.need_export |
boolean |
否 |
- |
是否请求导出。 |
|
data.outputs |
array/null |
否 |
null |
完整成片列表,实际数量可少于 |
|
outputs[i].index |
integer |
是 |
- |
成片序号,从0开始。 |
|
outputs[i].duration |
number |
是 |
- |
成片播放时长,单位秒。 |
|
outputs[i].opening_hook |
object |
是 |
- |
第一个开场钩子的来源视频与时间范围。 |
|
outputs[i].media_results |
array |
是 |
- |
按最终播放顺序排列的来源片段。 |
|
media_results[j].media_index |
integer |
是 |
- |
来源视频下标。 |
|
media_results[j].start_time |
number |
是 |
- |
来源视频开始时间,单位秒。 |
|
media_results[j].end_time |
number |
是 |
- |
来源视频结束时间,单位秒。 |
|
media_results[j].playback_speed |
number |
是 |
1.0 |
该来源片段实际播放速度,范围0.8~1.2。 |
|
outputs[i].output_url |
string/null |
是 |
null |
平台OSS返回临时签名URL,客户OSS返回持久对象HTTPS URL;不导出时为 |
|
data.error |
object/null |
否 |
null |
任务失败时的错误码和安全错误信息。 |
响应示例
{
"status": "SUCCESS",
"message": null,
"data": {
"task_id": "1720000000000_efgh",
"task_status": "SUCCESS",
"mode": "STORY_CUT",
"need_export": true,
"outputs": [{
"index": 0,
"duration": 118.6,
"opening_hook": {"media_index": 0, "start_time": 125.4, "end_time": 135.4},
"media_results": [
{"media_index": 0, "start_time": 125.4, "end_time": 135.4, "playback_speed": 1.0},
{"media_index": 0, "start_time": 151.0, "end_time": 200.3, "playback_speed": 1.0},
{"media_index": 1, "start_time": 42.1, "end_time": 101.4, "playback_speed": 1.0}
],
"output_url": "https://download.example.com/output-0.mp4"
}],
"error": null
}
}
cURL 示例
curl 'http://{endpoint}/api/v1/operators/highlight-editing/tasks/1720000000000_efgh'
HTTP状态码
|
状态码 |
说明 |
|
200 |
查询成功,包括任务本身为 |
|
404 |
任务不存在或任务类型不属于高光剪辑。 |
|
500 |
服务内部错误。 |
通用约束与错误码
-
单个输入视频最长3600秒,单个任务总时长最长14400秒。
-
输入必须包含视频流和音频流;静音视频会以
MEDIA_INVALID失败。 -
服务端基于镜头、VAD、ASR结果进行时间边界校验,模型不能直接提交任意毫秒范围。
-
当
need_export=true时执行真实FFmpeg渲染和OSS上传;平台URL默认有效7200秒,客户OSS返回不带临时签名的对象HTTPS URL。 -
高光剪辑平台默认输出Key为
highlight-outputs/{task_id}/output_{index}.mp4。
任务失败时,data.error.code返回如下异步错误码之一:MEDIA_UNAVAILABLE、MEDIA_INVALID、MEDIA_LIMIT_EXCEEDED、ASR_FAILED、MODEL_FAILED、MODEL_OUTPUT_INVALID、PLAN_INVALID、RENDER_FAILED、UPLOAD_FAILED、INTERNAL_ERROR。
失败任务查询示例
{
"status": "SUCCESS",
"message": null,
"data": {
"task_id": "1720000000000_efgh",
"task_status": "FAILED",
"error": {
"code": "MODEL_FAILED",
"message": "Media analysis or model recall failed."
}
}
}
应用案例:短剧出海高光剪辑素材生产
短剧出海平台需要针对海量剧集批量生产投放素材,且要求素材开头具备强吸引力以提升完播率。通过高光剪辑能力,平台可将该流程自动化:
-
提交任务:将同一部剧的多集源视频按剧情顺序放入
media_inputs,选择STORY_CUT混剪模式,并通过opening_hook指定开场钩子偏好。 -
大模型规划:服务端对多集素材进行镜头、语音与剧情的联合理解,跨集召回高光片段并规划成片时间线。
-
边界校验与渲染:服务端校验时间线合法性后,使用FFmpeg渲染并将成片上传至客户OSS。
-
获取结果:通过查询接口轮询任务状态,
task_status=SUCCESS后从outputs[i].output_url获取成片地址用于投放。