本文旨在介绍在脚本化自动成片场景下的合成参数、进阶配置、SDK调用示例。
脚本化自动成片与智能图文匹配成片共用同一个提交任务API。有关如何通过参数区分这两者,请参见参数区别说明
注意:在此接口中,所有媒资的OSS URL中的区域(region)必须与调用OpenAPI服务地址中的区域(region)保持一致。
支持脚本化自动成片的区域:华东2(上海)、华北2(北京)、华东1(杭州)、华南1(深圳)、美国(西部)、新加坡。
在实际使用过程中,请将文档所有参数示例中的 [your-bucket]、[your-region-id]、[your-file-name]、[your-file-path]、媒资ID(例如:“****9d46c8b4548681030f6e****”)等参数替换为您的实际值。
为了更好地阅读本文,建议您在阅读之前先了解智能一键成片中与【脚本化自动成片】相关的内容。
脚本化自动成片当前存在两种处理模式分别为“全局口播模式”和“分组口播模式”:
全局口播模式:可以通过多个完整的口播文案随机搭配脚本节点,从而实现批量视频混剪。
分组口播模式:可以通过将一个完整的口播文案拆分成多个段落,并分别与脚本的各个节点进行巧妙搭配,以实现更佳的效果。
如何通过参数区分“全局口播模式”和“分组口播模式”,如下所示:
当SpeechTextArray不为空,则视为“全局口播模式”;
当SpeechTextArray为空,且MediaGroupArray中只要有一个MediaGroup.Duration或MediaGroup.SpeechTextArray不为空,则视为“分组口播模式”;
当SpeechTextArray为空,且MediaGroupArray中所有的MediaGroup.Duration和MediaGroup.SpeechTextArray皆为空,则视为“全局口播模式”;
使用说明
将多个视频、音频、图片素材进行智能混剪,一键批量合成视频接口说明,请参见SubmitBatchMediaProducingJob - 批量智能一键成片,api关键参数详见下文InputConfig 参数说明、EditingConfig 参数说明、OutputConfig 参数说明。
获取批量智能一键成片作业的详细信息,请参见GetBatchMediaProducingJob - 获取批量智能一键成片任务信息。
InputConfig 参数说明
用户可通过配置InputConfig,指定视频素材、口播、背景音乐、贴纸等基础素材的参数配置。
参数 | 类型 | 说明 | 示例值 | 是否必填 | 支持模式 |
MediaGroupArray | List<MediaGroup> | 脚本化自动成片模式。输入为脚本化素材,支持设置分组名、素材列表 分组名:不超过50个字符,不支持emoji。 素材列表:媒资ID或素材OSS URL。 最多40个分组,每组最多200个素材。 | 是 |
| |
TitleArray | List<String> | 标题数组,每次合成随机选一个 最多50个,每个标题不超过50字 | ["标题1","标题2"] | 否 |
|
SubHeadingArray | List<SubHeading> | 副标题设置 | [{"Level":1,"TitleArray":["一级副标题1","一级副标题2"]},{"Level":3,"TitleArray":["三级副标题"]}] | 否 |
|
SpeechTextArray | List<String> |
| ["口播内容1","口播内容2"] | 否 |
|
StickerArray | List<Sticker> |
| [{"MediaId":"****9d46c8b4548681030f6e****","X":10,"Y":100,"Width":300,"Height":300,"Opacity":0.6}] | 否 |
|
BackgroundMusicArray | List<String> | 背景音乐数组,每次合成随机选一个。 最多50个,支持媒资ID 或 OSS URL。 | ["****b4549d46c88681030f6e****","****549d46c88b4681030f6e****"] | 否 |
|
BackgroundImageArray | List<String> |
| ["****b4549d46c88681030f6e****","****549d46c88b4681030f6e****"] | 否 |
|
MediaGroup 参数说明
“全局口播模式”与“分组口播模式”的MediaGroup参数配置差异可根据表格列“支持模式”区分。
参数 | 类型 | 说明 | 示例值 | 是否必填 | 支持模式 |
GroupName | String | 分组名, 不超过50个字符,不支持emoji。 | Group1 | 是 |
|
MediaArray | List<String> | 素材列表,支持 mediaId 或 url。 最多支持200个素材。 | ****b4549d46c88681030f6e**** | 是 |
|
SpeechTextArray | List<String> |
| ["口播内容1","口播内容2"] | 否 |
|
Duration | Float | 当前分组对应的时长,单位秒。仅限SpeechTextArray为空时填写。 | 10 | 否,默认5 |
|
SplitMode | String |
| NoSplit | 否,默认AverageSplit |
|
Volume | Float |
| 0.5 | 否 |
|
全局口播模式-参数示例
{
"MediaGroupArray": [
{
"GroupName": "UseMediaId",
"MediaArray": [
"****9d46c886b45481030f6e****",
"****c886810b4549d4630f6e****"
],
"SplitMode": "NoSplit"
},
{
"GroupName": "UseOssUrl",
"MediaArray": [
"http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].mp4",
"http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].png"
]
}
],
"TitleArray": [
"回龙观盒马鲜生开业啦",
"盒马鲜生开业啦"
],
"SubHeadingArray": [
{
"Level": 1,
"TitleArray": ["副标题1", "副标题2"]
},
{
"Level": 3,
"TitleArray": ["三级副标题"]
}
],
"SpeechTextArray": [
"附近的商场新开了一家盒马鲜生,今天是第一天开业,赶紧来凑热闹,这家盒马面积不大,但商场里的人不少,零食、酒水都比较便宜,排队的人都排成了长龙,大家也快来看看呀",
"附近的商场新开了一家盒马鲜生,今天是第一天开业,赶紧来凑热闹",
"<speak>战火<phoneme alphabet=\"py\" ph=\"zheng4 hao3\">正酣</phoneme>。今天,我们的主角,乒坛传奇马龙,正向着荣耀的巅峰发起冲击。1/4决赛中面对实力强劲的户上隼辅,马龙毫不畏惧,每一个回合都全力以赴。他精准的球路和冷静的判断,让他在这场比赛中占据了上风。最终,马龙成功战胜对手,晋级四强。</speak>"
],
"StickerArray": [
{
"MediaId": "****9d46c8b4548681030f6e****",
"X": 10,
"Y": 100,
"Width": 300,
"Height": 300,
"Opacity": 0.6
},
{
"MediaURL": "http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].png",
"X": 10,
"Y": 100,
"Width": 300,
"Height": 300
}
],
"BackgroundMusicArray": [
"****b4549d46c88681030f6e****",
"****549d46c88b4681030f6e****",
"http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].mp3"
],
"BackgroundImageArray": [
"****6c886b4549d481030f6e****",
"****9d46c8548b4681030f6e****",
"http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].png"
]
}
分组口播模式-参数示例
{
"MediaGroupArray": [{
"GroupName": "start",
"MediaArray": ["https://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].jpeg", "https://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].mp4"],
"Duration": 5,
"SplitMode": "NoSplit",
"Volume": 1
},
{
"GroupName": "group1",
"MediaArray": ["https://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].png", "https://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].mp4"],
"SpeechTextArray": ["附近的商场新开了一家盒马鲜生,今天是第一天开业", "今天是这家盒马鲜生第一天开业", "<speak>战火<phoneme alphabet=\"py\" ph=\"zheng4 hao3\">正酣</phoneme>。今天,我们的主角,乒坛传奇马龙,正向着荣耀的巅峰发起冲击。1/4决赛中面对实力强劲的户上隼辅,马龙毫不畏惧,每一个回合都全力以赴。他精准的球路和冷静的判断,让他在这场比赛中占据了上风。最终,马龙成功战胜对手,晋级四强。</speak>"]
},
{
"GroupName": "group2",
"MediaArray": ["https://[your-bucket].oss-[your-region-id].aliyuncs.com/0-test-batch-editing-materials/normal%20video.mp4", "https://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].jpeg"],
"SpeechTextArray": ["这家盒马面积不大,但商场里的人不少,零食、酒水都比较便宜,排队的人都排成了长龙", "现场特别热闹,人山人海,商品琳琅满目"]
},
{
"GroupName": "group3",
"MediaArray": ["https://[your-bucket].oss-[your-region-id].aliyuncs.com/0-test-batch-editing-materials/young_sunset_walk.mp4"],
"SpeechTextArray": ["快来看看吧", "快点来看看吧"]
},
{
"GroupName": "end",
"MediaArray": ["https://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].jpg", "https://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].mp4"],
"Duration": 5
}
],
"TitleArray": [
"回龙观盒马鲜生开业啦",
"盒马鲜生开业啦"
],
"StickerArray": [
{
"MediaId": "****9d46c8b4548681030f6e****",
"X": 10,
"Y": 100,
"Width": 300,
"Height": 300,
"Opacity": 0.6
},
{
"MediaURL": "http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].png",
"X": 10,
"Y": 100,
"Width": 300,
"Height": 300
}
],
"SubHeadingArray": [
{
"Level": 1,
"TitleArray": ["一级副标题1", "一级副标题2"]
},
{
"Level": 3,
"TitleArray": ["三级副标题"]
}
],
"BackgroundMusicArray": [
"****b4549d46c88681030f6e****",
"****549d46c88b4681030f6e****",
"http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].mp3"
],
"BackgroundImageArray": [
"****6c886b4549d481030f6e****",
"****9d46c8548b4681030f6e****",
"http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].png"
]
}
EditingConfig 参数说明
用户可通过配置EditingConfig,指定成片素材的音量、位置及其他合成参数。参数示例请参见:EditingConfig 参数示例
除了以下参数外,其余参数皆支持“全局口播模式”和“分组口播模式”:
ProcessConfig.AlignmentMode仅在“全局口播模式”下生效;
SpeechConfig.SpecialWordsConfig仅在“分组口播模式”下生效;
参数 | 类型 | 说明 | 示例值 | 是否必填 |
JSON | 输入视频素材相关配置。 | {"Volume":"1","MediaMetaDataArray":[{"Media":"****6c886b4549d481030f6e****","GroupName":"GroupA","TimeRangeList":[{"In":"0","Out":"1"},{"In":"2","Out":"3"}]}]} | 否 | |
JSON | 标题相关配置,支持配置字幕参数。 | {"Alignment":"TopCenter","AdaptMode":"AutoWrap","Font":"Alibaba PuHuiTi 2.0 95 ExtraBold","SizeRequestType":"Nominal","Y":0.1} | 否 | |
SubHeadingConfig | JSON | 多级副标题相关配置。支持设置字幕参数。 JSON字段说明: | {"1":{"Y":0.3,"FontSize":40},"3":{"Y":0.5,"FontSize":30}} | 否 |
JSON | 口播文案相关配置。 | 否 | ||
JSON | 背景音乐相关配置。 | {"Volume":0.2} | 否 | |
JSON | 背景图相关配置。如果InputConfig中已配置背景图,则此字段不生效。 | {"SubType":"Blur","Radius":0.5} | 否 | |
JSON | 混剪处理配置。 | 否 | ||
JSON | 用于前端页面预览时的画布配置。 | {"Width": 1080,"Height": 1920} | 否 | |
ProduceConfig | JSON | 普通剪辑合成配置,字段详见:EditingProduceConfig | {"AutoRegisterInputVodMedia":true,"OutputWebmTransparentChannel":true,"CoverConfig":{"StartTime":3.3},"AudioChannelCopy":"left","PipelineId":"****d54a97cff4108b555b01166d4****","MaxBitrate":5000,"KeepOriginMaxBitrate":false,"KeepOriginVideoMaxFps":false} | 否 |
ProcessConfig 参数说明
参数 | 类型 | 说明 | 示例值 | 是否必填 |
SingleShotDuration | Float | 长视频素材进行剪辑时会自动拆条,拆条后单镜头的时长,单位秒。 | 5 | 否,默认3 |
AllowVfxEffect | Boolean | 是否允许添加特效效果。 | true | 否,默认false |
VfxEffectProbability | Float | 特效应用在每个视频片段上的概率,取值:0.0 - 1.0,支持2位小数。 | 0.6 | 否,默认0.5 |
AllowTransition | Boolean | 是否允许添加转场效果。 | true | 否,默认false |
TransitionDuration | Float | 转场时长,单位秒。如果转场时长 > 片段时长 - 1,则该片段上的转场效果不会生效。 | 0.5 | 否,默认0.5秒 |
TransitionList | List<String> | 自定义转场效果列表,当AllowTransition=true时,随机选取列表中的一个转场效果进行合成,转场效果的可选范围详见转场效果库。如果传此参数null,则会从以下转场效果中随机选取:"linearblur", "colordistance", "crosshatch", "dreamyzoom", "doomscreentransition_up" | ["directional", "linearblur"] | 否 |
UseUniformTransition | Boolean | 单个成片中是否使用一致的转场效果。 | true | 否,默认true |
AlignmentMode | String | 表示视频和口播文案的对齐模式。仅在“全局口播模式”下生效。取值:
| AutoSpeed | 否,默认AutoSpeed |
ImageDuration | Float | 图片素材的持续时长,单位秒。 | 2 | 否,默认2 |
EditingConfig 参数示例
{
"MediaConfig": {
"Volume": 0 // 默认视频素材静音
},
"TitleConfig": {
"Alignment": "TopCenter",
"AdaptMode": "AutoWrap",
"Font": "Alibaba PuHuiTi 2.0 95 ExtraBold",
"SizeRequestType": "Nominal",
"Y": 0.1, // 成片为竖屏时,标题的默认Y坐标值
"Y": 0.05, // 成片为横屏时,标题的默认Y坐标值
"Y": 0.08 // 成片为方屏时,标题的默认Y坐标值
},
"SubHeadingConfig": {
"1": {
"Y": 0.3,
"FontSize": 40
},
"3": {
"Y": 0.5,
"FontSize": 30
}
},
"SpeechConfig": {
"Volume": 1, // 口播音频默认用原始音量
"SpeechRate": 0,
"Voice": null,
"Style": null,
"CustomizedVoice": null, // 人声克隆voiceId,若填写了此字段,Voice和Style将失效。
"AsrConfig": {
"Alignment": "TopCenter",
"AdaptMode": "AutoWrap",
"Font": "Alibaba PuHuiTi 2.0 65 Medium",
"SizeRequestType": "Nominal",
"Spacing": -1,
"Y": 0.8, // 成片为竖屏时,字幕Y的默认坐标值
"Y": 0.9, // 成片为横屏时,字幕Y的默认坐标值
"Y": 0.85 // 成片为方屏时,字幕Y的默认坐标值
},
"SpecialWordsConfig": [{
"Type": "Highlight",
"Style": {
"FontName": "KaiTi",
"FontSize": 80,
"FontColor": "20AEE9",
"OutlineColour": "2D20E9",
"Outline": 3,
"FontFace": {
"Bold": true,
"Underline": true
}
},
"WordsList": [
"视频云",
"智能媒体服务",
"智能一键成片"
]
},
{
"Type": "Highlight",
"Style": {
"FontFace": {
"Italic": true
}
},
"WordsList": [
"商品",
"看看"
]
},
{
"Type": "Forbidden",
"WordsList": [
"噼里啪啦",
"哔哩吧啦"
],
"SoundReplaceMode": "None"
}
]},
"BackgroundMusicConfig": {
"Volume": 0.2, // 背景音乐默认用20%音量,
"Style": null
},
"ProcessConfig": {
"SingleShotDuration": 3, // 拆条后的镜头时长
"AllowVfxEffect": false, // 是否添加特效效果
"AllowTransition": false, // 是否添加转场效果
"AlignmentMode": "AutoSpeed" // 仅在全局口播模式下支持此字段
}
}
TemplateConfig 参数说明
TemplateConfig为一键成片的公共参数,用于设置一键成片模板。详细参数说明和使用示例详见TemplateConfig 参数说明
OutputConfig 参数说明
用户可通过配置OutputConfig,指定成片输出地址、名称规则、成片的宽高、输出成片数量等合成参数。
“全局口播模式”与“分组口播模式”的OutputConfig参数配置说明是相同的。
参数 | 类型 | 说明 | 示例值 | 是否必填 |
MediaURL | String | 输出视频地址,必须要有占位符 {index}。 | 规则:http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name]_{index}.mp4 示例:http://example.oss-cn-shanghai.aliyuncs.com/example/example_{index}.mp4 | 当GeneratePreviewOnly=true时,且成片输出到OSS时必填 |
StorageLocation | String | 指定输出到VOD的媒资文件存储地址. | 规则:[your-vod-bucket].oss-[your-region-id].aliyuncs.com 示例:outin-****6c886b4549d481030f6e****.oss-cn-shanghai.aliyuncs.com | 当GeneratePreviewOnly=true时,且成片输出到VOD时必填 |
FileName | String | 输出文件名称,必须要有占位符{index}. | 规则:[your-file-name]__{index}.mp4 示例:example_{index}.mp4 | 当GeneratePreviewOnly=true时,且成片输出到VOD时必填 |
GeneratePreviewOnly | Boolean |
| false | 否,默认false |
Count | Integer | 输出视频数,数量上限为100。 | 10 | 否,默认1 |
MaxDuration | Float | 输出视频单片时长上限,单位秒。
| 20 | 否,默认15 |
FixedDuration | Float | 输出视频单片的固定时长,单位秒。如果设置了固定时长,视频时长将会对齐此参数。
| 20 | 否,默认15 |
Width | Integer | 成片宽,px | 1080 | 是 |
Height | Integer | 成片高,px | 1920 | 是 |
JSON | 输出视频流相关配置,Crf、Codec等 | {"Crf": 27} | 否 |
参数示例
{
"MediaURL": "http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name]_{index}.mp4",
"Count": 20,
"MaxDuration": 15,
"Width": 1080,
"Height": 1920,
"Video": {"Crf": 27},
"GeneratePreviewOnly":false
}
应用示例
示例一:通过口播分组模式配置片头片尾
适用场景
如果您希望为视频添加一致的片头和片尾,并配备统一的口播,请参阅该场景的示例。您可以通过将首尾分组的MediaGroup.SplitMode设置为NoSplit。此时,系统将不再对首尾分组中的素材进行拆条,而是将从首尾中随机选取的素材进行完整播放,以实现添加固定片头和片尾的效果。
示例参数
示例展示
脚本化自动成片
示例二:通过脚本化自动成片制作人脸集锦视频
如果您对人脸集锦场景相关的需求感兴趣,建议您查阅相关最佳实践:人脸集锦视频制作最佳实践。
SDK调用示例
前提条件
您已安装IMS服务端SDK,详情请参见准备工作。
代码示例
以全局口播模式为例
API调用入参详情
结果示例
竖屏 | 横屏 |
竖屏 | 横屏 |
进阶配置
进阶配置详见批量一键成片混剪逻辑与进阶配置
常见问题
脚本化自动成片常见问题请参见脚本化自动成片FAQ:
相关文档
获取脚本化自动成片详见GetBatchMediaProducingJob - 获取批量智能一键成片任务信息
通过脚本化自动成片制作人脸集锦视频详见人脸集锦视频制作教程
进阶配置详见批量一键成片混剪逻辑与进阶配置
- 本页导读 (1)
- 使用说明
- InputConfig 参数说明
- MediaGroup 参数说明
- 全局口播模式-参数示例
- 分组口播模式-参数示例
- EditingConfig 参数说明
- ProcessConfig 参数说明
- EditingConfig 参数示例
- TemplateConfig 参数说明
- OutputConfig 参数说明
- 参数示例
- 应用示例
- 示例一:通过口播分组模式配置片头片尾
- 示例二:通过脚本化自动成片制作人脸集锦视频
- SDK调用示例
- 前提条件
- 代码示例
- 结果示例
- 进阶配置
- 常见问题
- 相关文档