智能高光剪辑

更新时间:
复制 MD 格式

本文介绍基于大模型的高光剪辑(顺剪与混剪)解决方案及其API调用方式。该解决方案可面向游戏、教育、短剧、直播等场景,从整集或多集素材中自动规划并导出高光剪辑,助力您低成本、规模化地生产投放素材。

背景

在游戏、教育、短剧、直播等内容行业快速增长的背景下,投放素材的生产效率成为内容分发的核心瓶颈。传统人工剪辑高光片段依赖大量重复劳动,难以覆盖多语种、多版本、多平台的批量需求。

高光剪辑能力基于大模型对剧情、镜头与语音的联合理解,提供端到端的自动成片解决方案,支持顺剪(CONTINUOUS)和混剪(STORY_CUT)两种模式。您只需提供源视频与选材偏好,服务端即可自动完成候选召回、时间线规划、边界校验与视频渲染,输出可直接投放的完整成片。

使用限制

  • 单个输入视频时长最长3600秒,单个任务的输入总时长最长14400秒。

  • 输入视频必须同时包含可解码的视频流和音频流;静音视频会以MEDIA_INVALID失败。

  • 时间字段对外统一使用秒;indexmedia_index均从0开始。

  • 本期混剪不支持倒叙、片段自由重排和角色库能力。

功能介绍

高光剪辑任务均为异步任务,统一位于算子服务/api/v1/operators/highlight-editing路径下。任务提交后返回任务ID,您需通过查询接口轮询任务状态并获取成片结果。两种成片模式均由大模型完成规划,服务端校验时间线后使用FFmpeg导出。

顺剪(CONTINUOUS)

顺剪从开场钩子出发,沿原剧情持续向后推进,仅跳过由模型标记且通过镜头边界校验的包装范围,保留原始叙事顺序。该模式适用于将整集内容压缩为节奏更紧凑的连续版本。

使用顺剪时,per_media_target_duration必须为nullrequire_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、HTTPSOSS URI。

highlight_description

string

通用短剧高光标准

整体选材要求,最长2000字符。

editing.mode

string

-

成片模式,取值CONTINUOUS(顺剪)或STORY_CUT(混剪)。

editing.output_count

integer

3

最大成片数,范围1~10;实际数量可少于该值。

editing.target_duration

number

120

单条成片软目标总时长,单位秒。

editing.per_media_target_duration

number/null

null

每个视频的软目标贡献时长,仅STORY_CUT可用。

editing.require_all_media

boolean

false

每条成片是否必须覆盖全部输入,仅STORY_CUT可用。

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输出配置;need_export=false时禁止提供。

output.oss.region

string

使用OSS时是

-

客户OSS Region ID,如cn-shanghai

output.oss.bucket

string

使用OSS时是

-

客户OSS Bucket。

output.oss.object_key

string

使用OSS时是

-

必须且只能包含{task_id}{index};必须是无./..的相对路径。

调用示例

{
  "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"}
}

其中,statusAPI调用状态,默认SUCCESSmessage为错误信息,成功时为nulldata.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

模式与参数组合错误,status=INVALID_ARGUMENT

422

缺少字段或字段类型/范围错误,status=INVALID_PARAMS

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

-

异步任务状态,取值PENDINGRUNNINGSUCCESSFAILED

data.mode

string/null

-

成片模式,取值CONTINUOUSSTORY_CUT

data.need_export

boolean

-

是否请求导出。

data.outputs

array/null

null

完整成片列表,实际数量可少于output_count

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;不导出时为null

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

查询成功,包括任务本身为FAILED的情况。

404

任务不存在或任务类型不属于高光剪辑。

500

服务内部错误。

通用约束与错误码

  • 单个输入视频最长3600秒,单个任务总时长最长14400秒。

  • 输入必须包含视频流和音频流;静音视频会以MEDIA_INVALID失败。

  • 服务端基于镜头、VAD、ASR结果进行时间边界校验,模型不能直接提交任意毫秒范围。

  • need_export=true时执行真实FFmpeg渲染和OSS上传;平台URL默认有效7200秒,客户OSS返回不带临时签名的对象HTTPS URL。

  • 高光剪辑平台默认输出Keyhighlight-outputs/{task_id}/output_{index}.mp4

任务失败时,data.error.code返回如下异步错误码之一:MEDIA_UNAVAILABLEMEDIA_INVALIDMEDIA_LIMIT_EXCEEDEDASR_FAILEDMODEL_FAILEDMODEL_OUTPUT_INVALIDPLAN_INVALIDRENDER_FAILEDUPLOAD_FAILEDINTERNAL_ERROR

失败任务查询示例

{
  "status": "SUCCESS",
  "message": null,
  "data": {
    "task_id": "1720000000000_efgh",
    "task_status": "FAILED",
    "error": {
      "code": "MODEL_FAILED",
      "message": "Media analysis or model recall failed."
    }
  }
}

应用案例:短剧出海高光剪辑素材生产

短剧出海平台需要针对海量剧集批量生产投放素材,且要求素材开头具备强吸引力以提升完播率。通过高光剪辑能力,平台可将该流程自动化:

  1. 提交任务:将同一部剧的多集源视频按剧情顺序放入media_inputs,选择STORY_CUT混剪模式,并通过opening_hook指定开场钩子偏好。

  2. 大模型规划:服务端对多集素材进行镜头、语音与剧情的联合理解,跨集召回高光片段并规划成片时间线。

  3. 边界校验与渲染:服务端校验时间线合法性后,使用FFmpeg渲染并将成片上传至客户OSS。

  4. 获取结果:通过查询接口轮询任务状态,task_status=SUCCESS后从outputs[i].output_url获取成片地址用于投放。