短剧行业中,投放广告流的素材对于吸引用户和增长短剧的观众群体非常关键。这些素材通常是 2 至 5 分钟的视频,需包含引人入胜的剧情冲突和悬念,类似预告片的效果,有时还需要添加剧情解说来增强理解和吸引力。目前这些素材大多通过人工制作来完成,但效率较低,成本较高,制作周期较长,迫切需要一种更高效、更智能的方案。
为解决这一痛点,火山引擎视频点播提供短剧高光智剪能力,基于大模型的多模态高光提取算法,智能地从短剧正片视频中提取出最精彩的高光片段。用户还可通过火山引擎提供的视频剪辑功能,对这些高光片段进行二次剪辑和调整,生成单集摘要、剧集集锦、剧集宣传片等不同形式的视频素材,用于广告投放、短剧宣传等各种场景。本文将介绍如何通过控制台和 OpenAPI 使用短剧高光智剪功能。
输入视频满足下面条件:
短剧高光智剪会产生以下费用:
调用 StartExecution 接口提交高光分析任务,经大模型分析生成高光片段的时间信息。支持输入单个或多个短剧视频进行高光分析。提交高光分析任务时,您需要关注以下参数:
MultiInputs.Type 参数为 Vid 或 DirectUrl,指定输入视频的来源类型。
Vid 模式,需设置 MultiInputs.Vid 参数为视频 Vid。DirectUrl 模式,需设置 MultiInputs.DirectUrl 参数为视频 FileName。Operation.Type 参数为 Task,表示执行单任务。Operation.Task.Type 参数为 Highlight,表示执行高光分析任务。
Operation.Task.Highlight.Mode 参数为 StorylineCuts(故事线混剪模式)。Operation.Task.Highlight.HighlightCuts 参数:
WithStoryboard 参数选择是否输出算法基于分镜理解得出的视频片段信息。MinDuration、MaxDuration 和 MaxNumber 参数限制输出高光片段的最小时长、最大时长以及最多片段数。说明
在实际高光分析过程中,为确保剧情的连贯性并保留“钩子”剧情,算法所输出高光视频的时长可能不会与您所设置的 MinDuration 和 MaxDuration 严格相符。
Operation.Task.Highlight.OpeningHook 参数开启并配置智能精彩前置功能。系统将自动分析并提取视频中最精彩的片段,将其置于视频开头,以吸引观众。说明
为了帮助您高效生成用于广告投放的高转化率素材,我们根据短剧行业的投放经验,提供以下参数配置最佳实践:
以下为通过 Vid 输入多个视频提交高光分析任务的示例:
{ "MultiInputs": [ { "Type": "Vid", "Vid": "v02399g1000***qpj9aljht5kim11hp0" }, { "Type": "Vid", "Vid": "v02399g100***qpj9aljht4nmunv9ng" }, { "Type": "Vid", "Vid": "v02399g100***qpj9aljhta75lgba20" } ], "Operation": { "Type": "Task", "Task": { "Type": "Highlight", "Highlight": { "Mode": "StorylineCuts", "HighlightCuts": { "WithStoryboard": true, "MinDuration": 60, "MaxDuration": 180, "MaxNumber": 2 }, "OpeningHook": { "WithOpeningHook": true } } } } }
成功提交后,系统将返回任务的唯一标识 RunId。请务必保存好此 ID,以便后续查询结果。
通过以下方式获取高光分析结果:
OpenAPI:任务提交后,系统会在后台进行异步处理。您可以间隔一段时间后,调用 GetExecution 接口,并传入步骤 1 中获取的 RunId 来获取高光分析结果。当返回结果中的 Status 字段值为 Success 时,表示任务已成功完成。
GET https://vod.volcengineapi.com?Action=GetExecution&Version=2025-01-01&RunId=hb:ebd05bee1f3873***f7316c742b5f
事件通知:配置媒体处理任务执行完成事件通知。视频点播服务会在任务执行完成时及时通知您。可从回调结果中 OutputTaskHighlight 获取高光分析结果。
高光分析结果具体说明如下:
Cuts 是算法根据 StartExecution 接口请求参数 HighlightCuts 中输入的条件限制提取高光片段信息。片段分为 HighlightClip(普通高光片段)和 OpeningHook(视频前置精彩片段)两种类型。Storyboard 是算法基于分镜理解得出的视频片段信息。每个片段涵盖片段开始时间、结束时间、高光打分、字幕信息、剧情描述以及片段源自哪个输入视频等信息。详细参数介绍,请见 OutputTaskHighlightCuts。以下高光分析结果示例:
{ "Output": { "Type": "Task", "Task": { "Type": "Highlight", "Highlight": { "Duration": 350.26, "HighlightCuts": { "Cuts": [ { "Clips": [ { "Type": "OpeningHook", "Score": 4.8, "Start": 90.43, "End": 99.56, "VideoIndex": 2, "CutStart": 0, "CutEnd": 9.13 }, { "Type": "HighlightClip", "Score": 4.8, "Start": 9.46, "End": 13.33, "VideoIndex": 0, "CutStart": 9.13, "CutEnd": 13.0 } ] } ], "Storyboard": [ { "VideoIndex": 0, "Start": 9.46, "End": 13.33, "Score": 4.8, "Ocr": "陆斯年,我们分手吧!", "Description": "视频展示了一对情侣在公园里散步的场景...女子提出了分手的请求。" }, { "VideoIndex": 0, "Start": 15.83, "End": 24.2, "Score": 4.2, "Ocr": "怎么了?是我哪里惹你...咱们就回国结婚的吗?", "Description": "视频展示了一对男女在夜晚户外的场景...营造出一种温馨但略带紧张的氛围。" } ] } } } } }
获取高光分析结果后,调用 SubmitDirectEditTaskAsync 接口提交剪辑任务,截取原始视频里的高光片段并重新合成一个视频,还能添加花字或图片 logo。您需要从步骤 2 返回结果的 Output.Task.Highlight.HighlightCuts.Cuts[].Clips[] 数组中获取以下信息并在调用 SubmitDirectEditTaskAsync 接口时传入:
Start:高光片段在原始视频中的起始时间点。End:高光片段在原始视频中的结束时间点。说明
请注意,从高光分析结果中获取的时间单位为秒,在调用剪辑接口时,需要将其乘以 1000 转换为毫秒。
调用 SubmitDirectEditTaskAsync 接口时,关注以下参数:
Application 参数为 VideoTrackHighlight。EditParam.Track 参数:
video 类型的资源,并在资源的 Extra 字段中添加 trim 类型的 Filter 截取高光片段。text 类型的资源添加花字。image 类型的资源添加图片 logo。您需要先将图片以素材形式上传至视频点播服务,然后获取图片的 Mid 或 FileName。详见上传素材。EditParam.Upload 参数配置剪辑任务完成后输出的产物会被上传至哪个空间。EditParam.Output 参数配置输出产物的封装格式、码率、帧率等。如果您需要生成多码率的高光片段,首先生成最高分辨率视频,然后再进行转码。如果只需要单一码率的高光片段,只需设置 Crf 参数和输出视频的宽高即可满足需求。从高光分析结果的 Output.Task.Highlight.HighlightCuts 中获取 Start 和 End 值,乘以 1000 转换为毫秒后,填入以下示例代码的 StartTime 和 EndTime 参数中。假设高光片段为 0.52-5.32 秒、13.04-30.88 秒、39.76-75 秒,可参考以下示例代码生成高光片段视频:
说明
示例中的 TargetTime 参数定义了每个片段在最终合成视频中的时间位置,其结束时间是基于前面所有片段时长累加计算得出的。例如,第一个片段时长 4800 ms,TargetTime 为[0, 4800];第二个片段时长 17840 ms,则其 TargetTime 为 [4800, 4800+17840],即 [4800, 22640]。
{ "Application": "VideoTrackHighlight", "Uploader": "test-doc", "EditParam":{ "Upload":{ "SpaceName": "test-doc", "VideoName": "highlight" }, "Output":{}, "Track": [ [ { "Source": "vid://v0325cg10001c***7jaljht7ks0d60i0", "Type": "video", "TargetTime": [ 0, 4800 ], "Extra": [ { "StartTime": 520, "EndTime": 5320, "Type": "trim" } ] }, { "Source": "vid://v0325cg10001***17jaljht7ks0d60i0", "Type": "video", "TargetTime": [ 4800, 22640 ], "Extra": [ { "StartTime": 13040, "EndTime": 30880, "Type": "trim" } ] }, { "Source": "vid://v0325cg10001c***7jaljht7ks0d60i0", "Type": "video", "TargetTime": [ 22640, 57880 ], "Extra": [ { "StartTime": 39760, "EndTime": 75000, "Type": "trim" } ] }, { "Type": "text", "TargetTime": [ 0, 57880 ], "Extra": [ { "Type": "transform", "PosX": 150, "PosY": 1024, "Width": 432, "Height": 256 } ], "Text": "短剧剧名", "TextRes": "1179433", "FontSize": 56 } ] ] } }
通过以下方式获取云剪辑输出的高光视频: