微短剧解决方案提供通过API进行视频剪辑(云剪辑)的能力。通过阅读本文,您可以了解微短剧视频剪辑(云剪辑)作业的基本API调用方法。
使用微短剧媒体云剪辑,请确保您已基本了解什么是云剪辑。详情参见云剪辑概述。
创建云剪辑工程
概述
微短剧云剪辑是一项基于云端的视频剪辑服务,提供视频剪切拼接、混音、字幕、图片叠加、遮标、转场特效等功能。您可以通过在线可视化剪辑平台(控制台)或OpenAPI进行操作,实现快速高效的视频制作和发布。
解决的问题
微短剧云剪辑解决了以下问题:
视频素材管理:无需下载和上传操作,直接在云端进行视频剪辑。
多功能剪辑:支持多种剪辑功能,满足不同制作需求。
高效合成:快速合成新视频并存储到点播媒资库,方便分发播放。
基本流程
短剧制作人,为了能够快速高效地完成视频的剪辑和发布,决定通过云剪辑,可以在不下载视频素材的情况下,直接在云端进行剪辑操作,包括视频剪切拼接、混音、添加字幕、图片叠加、遮标、转场特效等功能。这提高了工作效率,同时也简化了视频素材的管理流程。
上传原片:
如果您使用的是点播系统Bucket,可以直接在控制台上传字幕/字体文件,也可以通过上传SDK上传辅助媒资;如果您使用的是自有OSS bucket,可以直接使用OSS SDK将您的字幕/字体文件上传到OSS以便进一步使用。
添加字幕:云剪辑支持srt格式字幕文件,并提供多种样式设置。如果您的字幕格式是vtt,需要使用FFMPEG进行文件格式转换:
ffmpeg -i example.vtt example.srt
以下是字幕样式参数示例:
{ "SubtitleLayers": [ { "SubtitleLayerClips": [ { "FileUrl": "https://your-bucket.oss-cn-shanghai.aliyuncs.com/your-subtitle.srt", "SubType": "srt", "Type": "Subtitle", "Font": "https://your-bucket.oss-cn-shanghai.aliyuncs.com/your-font.ttf", "FontColor": "#ffffff", "Y": 0.6927, "FontSize": 75, "Alignment": "TopCenter", "TextWidth": 0.9, "AdaptMode": "AutoWrapAtSpacesStrict", "SubtitleEffects": [ { "Type": "Box", "Color": "#000000", "Opacity": 0.5, "XBord": 10, "YBord": 10, "Radius": 15 } ] } ] } ] }
字幕轨道支持设置多种字幕样式来灵活实现短剧场景的各种功能,字幕参数如下:
名称
类型
描述
FontSize
Int
当字幕类型为横幅文字时,表示文字的字号。默认为0,最大支持设置到5000。
FontColor
String
当字幕类型为横幅文字时,表示文字的颜色,格式为#后跟16进制值。例如:#ffffff。
Alignment
String
当字幕类型为横幅文字时,用于设置定位对齐方式,默认为TopLeft,支持设置:
TopLeft:视频左上角
TopCenter:视频竖直中轴线上侧
TopRight:视频右上角
CenterLeft:视频水平中轴线左侧
CenterCenter:视频中心位置
CenterRight:视频水平中轴线右侧
BottomLeft:视频左下角
BottomCenter:视频竖直中轴线下侧
BottomRight:视频右下角
若需要在不同对齐方式下准确定位字幕位置,建议设置以下对齐方式:
Left,左对齐,X、Y传入字幕左上角顶点相对于视频左上角的坐标
Center,居中对齐,X、Y传入字幕中轴线上边界交点相对于视频左上角的坐标
Right,右对齐,X、Y传入字幕右上角顶点相对于视频左上角的坐标
AdaptMode
String
横幅文字当超出视频宽度或超出指定TextWidth时进行自动换行或缩放:
AutoWrap:自动换行
AutoScale:自动缩放
AutoWrapAtSpacesStrict:严格按照在空格位置自动换行(适用于纯英文字幕自动换行场景)
TextWidth
Float
字幕文本框宽度,当设置AdaptMode时生效。将按照该值设置文本框宽度进行自动换行或缩放。不填写时,会按照视频宽度进行自动换行或缩放。当值大于0小于等于1时,表示相对输出视频的宽度,当值大于1时,表示绝对像素值。
FontUrl
String
当字幕类型为横幅文字时,支持使用用户OSS的字体文件路径来生成字幕,支持ttf、otf、woff三种格式的字体文件。例如:https://your-bucket.oss-cn-shanghai.aliyuncs.com/example-font.ttf
支持传入「OSS 外网 Endpoint 地址」或者「其它公网可以访问的地址」
SubtitleEffects
SubtitleEffect[]
当字幕类型为横幅文字时,表示文字多层效果。目前支持设置多层描边、多层阴影、高斯模糊效果(高斯模糊仅支持在类型为阴影时使用)和字幕背景效果。字幕圆角样式背景参考该字段细节
SubtitleEffects内支持设置多层描边、多层阴影、发光效果、字幕背景等多种样式,具体参数说明如下所示:
名称
类型
是否必填
描述
Type
String
是
-Outline:描边
-Shadow:阴影
-Box:字幕底框
Bord
Float
否
描边/阴影宽度或高度,当大于1时,表示像素值,当大于0小于1时,表示相对文字大小的宽度或高度。
XBord
Float
否
描边/阴影宽度,当大于1时,表示像素值,当大于0小于1时,表示相对文字大小的宽度,优先级高于Bord。
YBord
Float
否
描边/阴影高度,当大于1时,表示像素值,当大于0小于1时,表示相对文字大小的高度,优先级高于Bord。
Shift
Float
否
描边/阴影左右/上下偏移量,当绝对值大于1时,表示像素值,当绝对值大于0小于1时,表示相对文字大小的偏移量,支持设置负数,效果为向上/左偏移。
XShift
Float
否
描边/阴影左右偏移量,当绝对值大于1时,表示像素值,当绝对值大于0小于1时,表示相对文字大小的左右偏移量,优先级高于Shift。
YShift
Float
否
描边/阴影上下偏移量,当绝对值大于1时,表示像素值,当绝对值大于0小于1时,表示相对文字大小的上下偏移量,优先级高于Shift。
Color
String
否
RGB颜色,格式为#后跟16进制值。例如:#ffffff。
Opacity
String
否
不透明度,1为完全不透明,0为完全透明。
Blur
Float
否
高斯模糊范围,像素值,仅支持在Type=Shadow时使用,可以实现字幕外发光效果。
Radius
Float
否
文字纯色背景圆角半径,仅支持在Type=Box时使用,可以实现字幕背景圆角效果。
Timeline示例
{ "VideoLayers": [{ "VideoLayerClips": [{ "MediaId": "xxx" }] }], "SubtitleLayers": [{ "SubtitleLayerClips": [{ "FileUrl": "https://your-bucket.oss-cn-shanghai.aliyuncs.com/your-subtitle.srt", "SubType": "srt", "Type": "Subtitle", "Font": "https://your-bucket.oss-cn-shanghai.aliyuncs.com/your-font.ttf", "FontColor": "#ffffff", "Y": 0.6927, "FontSize": 75, "Alignment": "TopCenter", "TextWidth": 0.9, "AdaptMode": "AutoWrapAtSpacesStrict", "SubtitleEffects": [{ "Type": "Box", "Color": "#000000", "Opacity": 0.5, "XBord": 10, "YBord": 10, "Radius": 15 }] }] }], "FECanvas": { "Height": 1920, "Width": 1080 } }
生成成片:通过云剪辑工具或API进行视频剪辑,合成新视频并存储。
使用
AddEditingProject
接口创建云剪辑工程,以下是示例代码:package com.aliyun.sample; import com.aliyun.tea.*; public class Sample { public static com.aliyun.vod20170321.Client createClient() throws Exception { com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config() .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")) .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")); config.endpoint = "vod.cn-shanghai.aliyuncs.com"; return new com.aliyun.vod20170321.Client(config); } public static void main(String[] args_) throws Exception { java.util.List<String> args = java.util.Arrays.asList(args_); com.aliyun.vod20170321.Client client = Sample.createClient(); com.aliyun.vod20170321.models.AddEditingProjectRequest addEditingProjectRequest = new com.aliyun.vod20170321.models.AddEditingProjectRequest(); com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions(); try { client.addEditingProjectWithOptions(addEditingProjectRequest, runtime); } catch (TeaException error) { System.out.println(error.getMessage()); System.out.println(error.getData().get("Recommend")); com.aliyun.teautil.Common.assertAsString(error.message); } catch (Exception _error) { TeaException error = new TeaException(_error.getMessage(), _error); System.out.println(error.getMessage()); System.out.println(error.getData().get("Recommend")); com.aliyun.teautil.Common.assertAsString(error.message); } } }
合成的新视频将存储到点播媒资库,您可以快速进行分发播放。