云剪輯
微短劇解決方案提供通過API進(jìn)行視頻剪輯(云剪輯)的能力。通過閱讀本文,您可以了解微短劇視頻剪輯(云剪輯)作業(yè)的基本API調(diào)用方法。
使用微短劇媒體云剪輯,請(qǐng)確保您已基本了解什么是云剪輯。詳情參見云剪輯概述。
創(chuàng)建云剪輯工程
概述
微短劇云剪輯是一項(xiàng)基于云端的視頻剪輯服務(wù),提供視頻剪切拼接、混音、字幕、圖片疊加、遮標(biāo)、轉(zhuǎn)場(chǎng)特效等功能。您可以通過在線可視化剪輯平臺(tái)(控制臺(tái))或OpenAPI進(jìn)行操作,實(shí)現(xiàn)快速高效的視頻制作和發(fā)布。
解決的問題
微短劇云剪輯解決了以下問題:
視頻素材管理:無需下載和上傳操作,直接在云端進(jìn)行視頻剪輯。
多功能剪輯:支持多種剪輯功能,滿足不同制作需求。
高效合成:快速合成新視頻并存儲(chǔ)到點(diǎn)播媒資庫(kù),方便分發(fā)播放。
基本流程
短劇制作人,為了能夠快速高效地完成視頻的剪輯和發(fā)布,決定通過云剪輯,可以在不下載視頻素材的情況下,直接在云端進(jìn)行剪輯操作,包括視頻剪切拼接、混音、添加字幕、圖片疊加、遮標(biāo)、轉(zhuǎn)場(chǎng)特效等功能。這提高了工作效率,同時(shí)也簡(jiǎn)化了視頻素材的管理流程。
上傳原片:
如果您使用的是點(diǎn)播系統(tǒng)Bucket,可以直接在控制臺(tái)上傳字幕/字體文件,也可以通過上傳SDK上傳輔助媒資;如果您使用的是自有OSS bucket,可以直接使用OSS SDK將您的字幕/字體文件上傳到OSS以便進(jìn)一步使用。
添加字幕:云剪輯支持srt格式字幕文件,并提供多種樣式設(shè)置。如果您的字幕格式是vtt,需要使用FFMPEG進(jìn)行文件格式轉(zhuǎn)換:
ffmpeg -i example.vtt example.srt
以下是字幕樣式參數(shù)示例:
{ "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 } ] } ] } ] }
字幕軌道支持設(shè)置多種字幕樣式來靈活實(shí)現(xiàn)短劇場(chǎng)景的各種功能,字幕參數(shù)如下:
名稱
類型
描述
FontSize
Int
當(dāng)字幕類型為橫幅文字時(shí),表示文字的字號(hào)。默認(rèn)為0,最大支持設(shè)置到5000。
FontColor
String
當(dāng)字幕類型為橫幅文字時(shí),表示文字的顏色,格式為#后跟16進(jìn)制值。例如:#ffffff。
Alignment
String
當(dāng)字幕類型為橫幅文字時(shí),用于設(shè)置定位對(duì)齊方式,默認(rèn)為TopLeft,支持設(shè)置:
TopLeft:視頻左上角
TopCenter:視頻豎直中軸線上側(cè)
TopRight:視頻右上角
CenterLeft:視頻水平中軸線左側(cè)
CenterCenter:視頻中心位置
CenterRight:視頻水平中軸線右側(cè)
BottomLeft:視頻左下角
BottomCenter:視頻豎直中軸線下側(cè)
BottomRight:視頻右下角
若需要在不同對(duì)齊方式下準(zhǔn)確定位字幕位置,建議設(shè)置以下對(duì)齊方式:
Left,左對(duì)齊,X、Y傳入字幕左上角頂點(diǎn)相對(duì)于視頻左上角的坐標(biāo)
Center,居中對(duì)齊,X、Y傳入字幕中軸線上邊界交點(diǎn)相對(duì)于視頻左上角的坐標(biāo)
Right,右對(duì)齊,X、Y傳入字幕右上角頂點(diǎn)相對(duì)于視頻左上角的坐標(biāo)
AdaptMode
String
橫幅文字當(dāng)超出視頻寬度或超出指定TextWidth時(shí)進(jìn)行自動(dòng)換行或縮放:
AutoWrap:自動(dòng)換行
AutoScale:自動(dòng)縮放
AutoWrapAtSpacesStrict:嚴(yán)格按照在空格位置自動(dòng)換行(適用于純英文字幕自動(dòng)換行場(chǎng)景)
TextWidth
Float
字幕文本框?qū)挾?,?dāng)設(shè)置AdaptMode時(shí)生效。將按照該值設(shè)置文本框?qū)挾冗M(jìn)行自動(dòng)換行或縮放。不填寫時(shí),會(huì)按照視頻寬度進(jìn)行自動(dòng)換行或縮放。當(dāng)值大于0小于等于1時(shí),表示相對(duì)輸出視頻的寬度,當(dāng)值大于1時(shí),表示絕對(duì)像素值。
FontUrl
String
當(dāng)字幕類型為橫幅文字時(shí),支持使用用戶OSS的字體文件路徑來生成字幕,支持ttf、otf、woff三種格式的字體文件。例如:https://your-bucket.oss-cn-shanghai.aliyuncs.com/example-font.ttf
支持傳入「OSS 外網(wǎng) Endpoint 地址」或者「其它公網(wǎng)可以訪問的地址」
SubtitleEffects
SubtitleEffect[]
當(dāng)字幕類型為橫幅文字時(shí),表示文字多層效果。目前支持設(shè)置多層描邊、多層陰影、高斯模糊效果(高斯模糊僅支持在類型為陰影時(shí)使用)和字幕背景效果。字幕圓角樣式背景參考該字段細(xì)節(jié)
SubtitleEffects內(nèi)支持設(shè)置多層描邊、多層陰影、發(fā)光效果、字幕背景等多種樣式,具體參數(shù)說明如下所示:
名稱
類型
是否必填
描述
Type
String
是
-Outline:描邊
-Shadow:陰影
-Box:字幕底框
Bord
Float
否
描邊/陰影寬度或高度,當(dāng)大于1時(shí),表示像素值,當(dāng)大于0小于1時(shí),表示相對(duì)文字大小的寬度或高度。
XBord
Float
否
描邊/陰影寬度,當(dāng)大于1時(shí),表示像素值,當(dāng)大于0小于1時(shí),表示相對(duì)文字大小的寬度,優(yōu)先級(jí)高于Bord。
YBord
Float
否
描邊/陰影高度,當(dāng)大于1時(shí),表示像素值,當(dāng)大于0小于1時(shí),表示相對(duì)文字大小的高度,優(yōu)先級(jí)高于Bord。
Shift
Float
否
描邊/陰影左右/上下偏移量,當(dāng)絕對(duì)值大于1時(shí),表示像素值,當(dāng)絕對(duì)值大于0小于1時(shí),表示相對(duì)文字大小的偏移量,支持設(shè)置負(fù)數(shù),效果為向上/左偏移。
XShift
Float
否
描邊/陰影左右偏移量,當(dāng)絕對(duì)值大于1時(shí),表示像素值,當(dāng)絕對(duì)值大于0小于1時(shí),表示相對(duì)文字大小的左右偏移量,優(yōu)先級(jí)高于Shift。
YShift
Float
否
描邊/陰影上下偏移量,當(dāng)絕對(duì)值大于1時(shí),表示像素值,當(dāng)絕對(duì)值大于0小于1時(shí),表示相對(duì)文字大小的上下偏移量,優(yōu)先級(jí)高于Shift。
Color
String
否
RGB顏色,格式為#后跟16進(jìn)制值。例如:#ffffff。
Opacity
String
否
不透明度,1為完全不透明,0為完全透明。
Blur
Float
否
高斯模糊范圍,像素值,僅支持在Type=Shadow時(shí)使用,可以實(shí)現(xiàn)字幕外發(fā)光效果。
Radius
Float
否
文字純色背景圓角半徑,僅支持在Type=Box時(shí)使用,可以實(shí)現(xiàn)字幕背景圓角效果。
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進(jìn)行視頻剪輯,合成新視頻并存儲(chǔ)。
使用
AddEditingProject
接口創(chuàng)建云剪輯工程,以下是示例代碼: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); } } }
合成的新視頻將存儲(chǔ)到點(diǎn)播媒資庫(kù),您可以快速進(jìn)行分發(fā)播放。