微短劇解決方案提供通過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); } } }
合成的新視頻將存儲到點播媒資庫,您可以快速進行分發播放。