簡介
- 建立工作流程 時,有幾個需要關注的對象:
-
Topology
拓撲結構是指可自訂的業務處理流程,DAG。
-
Activity
活動是指組成拓撲結構的處理節點,在建立DASH打包工作流程時要注意以下幾個活動:
-
指定DASH打包配置,設定Master Playlist檔案輸出位置。
前後依賴:
-
前置節點允許:Start。
-
後置節點允許:SubtitleGroup、AudioGroup、VideoGroup。
-
-
指定字幕分組ID和語言。
前後依賴:
-
前置節點允許:PackageConfig。
-
後置節點允許:Transcode(僅字幕)。
-
-
指定音頻分組ID和語言。
前後依賴:
-
前置節點允許:PackageConfig。
-
後置節點允許:Transcode (僅音頻)。
-
-
指定視頻分組ID。
前後依賴:
-
前置節點允許:PackageConfig。
-
後置節點允許:Transcode (僅視頻)。
-
-
用於提取視頻流、音頻流、字幕流。
前後依賴:
-
前置節點允許:SubtitleGroup、AudioGroup、VideoGroup。
-
後置節點允許:GenerateMasterPlayList。
-
-
打包組建活動。
前後依賴:
-
前置節點允許:Transcode。
-
後置節點允許:Report。
-
-
-
Dependencies
依賴關係是拓撲結構中的邊,指明活動之間的依賴。
-
-
調用 新增媒體,需要注意以下幾點:
-
指定媒體工作流程ID。
-
若存在字幕提取,可以設定參數OverrideParams,以覆蓋字幕Transcode活動中的固定字幕檔案地址參數,如
{"subtitleTransNode":{"InputConfig":{"Format":"stl","InputFile":{"URL":"http://subtitleBucket.oss-cn-hangzhou.aliyuncs.com/package/subtitle/CENG.stl"}}}}
其中 sutitleTransNode為工作流程定義中的字幕抽取結點 -
工作流程觸發模式設定為:NotInAuto。
-
情境
源檔案mxf格式(也可是其它格式如mp4、flv、m3u8(ts)),從源檔案中提取3路音軌,提取2路視頻流。提取2路WebVTT字幕,最終組合打包成一個Master Playlist:
-
設定Bucket。
-
設定Location。
-
設定Master Playlist的名稱。
-
活動定義如下:
{ "Parameters" : { "Output" : "{\"Bucket\": \"processedmediafile\",\"Location\": \"oss-cn-hangzhou\",\"MasterPlayListName\": \"{MediaId}/{RunId}/dash/master.mpd\"}" }, "Type" : "PackageConfig" }
- Output設定Master Playlist的儲存位置及名稱,參見 PackageConfig活動支援的參數。
- Type指定活動類型為PackageConfig。
-
活動定義:
"audio-cn-group" : { "Name" : "audio-cn-group", "Parameters" : { "AdaptationSet" : "{\"Lang\":\"chinese\",\"Group\":\"AudioGroupChinese\"}" }, "Type" : "AudioGroup" }
- Group:指定音頻分組Id為AudioGroupChinese。
- Type:類型為AudioGroup活動。
-
從mxf源檔案中提取音頻流,需要去掉視頻流。
-
輸出的音頻流參數:
-
活動定義:
"audioCNTransNode" : { "Name" : "audioCNTransNode", "Parameters" : { "Outputs" : "[{\"TemplateId\":\"d053297fc44f9DashTemplateId\",\"AudioStreamMap\":\"0:a:0\",\"Video\":{\"Remove\":\"true\"}}]", "Representation" : "{\"Id\":\"chinese128k\",\"URI\":\"audiocn/cn-abc.mpd\"}" }, "Type" : "Transcode" }
"video-group" : {
"Name" : "video-group",
"Parameters" : {
"AdaptationSet" : "{\"Group\":\"VideoGroup\"}"
},
"Type" : "VideoGroup"
}
-
從mxf源檔案中提取視頻流,需要去掉音頻流。
-
活動定義:
"videoTransSD" : { "Name" : "videoTransSD", "Parameters" : { "Outputs" : "[{\"TemplateId\":\"d861b90f6c0aed8f81095e5c5b857cba\",\"Audio\":{\"Remove\":\"true\"}}]", "Representation" : "{\"Id\":\"476pSD\",\"URI\":\"videoSD/xx.mpd\"}" }, "Type" : "Transcode" }
-
自訂轉碼模板ID:d861b90f6c0aed8f81095e5c5b857cba,可調用介面進行建立,容器格式為mpd
-
在輸出中移除掉音頻流,參見 Audio詳情。
-
URI: 視頻流提取後的名稱及儲存地址。
-
Type設定為Transcode,即轉碼活動。
-
-
設定字幕分組ID
-
活動定義:
"subtitle-cn-group" : { "Name" : "subtitle-cn-group", "Parameters" : { "AdaptationSet" : "{\"Lang\":\"Chinese\", \"Group\":\"SubtitleENGroup\"}" }, "Type" : "SubtitleGroup" }
- Group:指定音頻分組名稱為SubtitleENGroup。
- Lang: 指定此字幕組的語言
- Type:類型為SubtitleGroup活動。
-
上傳STL、TTML、WebVtt格式的字幕到OSS中。
-
活動定義:
"subtitleCNNode" : { "Name" : "subtitleCNNode", "Parameters" : { "InputConfig" : "{\"Format\":\"vtt\",\"InputFile\":{\"URL\":\"http://bucketname.oss-cn-hangzhou.aliyuncs.com/test/Audio-SiHD.chs.vtt\"}}", "Representation" : "{\"Id\":\"subtitle-chinese\", \"URI\":\"subtitle/cn-xx.vtt\"}" }, "Type" : "Transcode" }
-
InputConfig 指定字幕地址,字幕地址在調用 AddMedia 時可以被動態覆蓋,見參數OverrideParams。
-
URI: 字幕流提取後的名稱及輸出目錄。
-
Type設定為Transcode,即轉碼活動。
-
-
通過提取音頻、視頻、字幕,將所有提取轉換後的資源打包成一個Master Playlist。
-
活動定義:
{ "Parameters" : { }, "Type" : "GenerateMasterPlayList" }
- Type設定為GenerateMasterPlayList,即產生Master Playlist活動。
{
"Activities": {
"act-package": {
"Name": "act-package",
"Parameters": {
"Output": "{\"Bucket\": \"outputbucketname\",\"Location\": \"oss-cn-hangzhou\",\"MasterPlayListName\": \"dashpackage/{MediaId}/{RunId}/master.mpd\"}",
"Protocol": "dash"
},
"Type": "PackageConfig"
},
"video-group": {
"Name": "video-group",
"Parameters": {
"AdaptationSet": "{\"Group\":\"VideoGroup\"}"
},
"Type": "VideoGroup"
},
"audio-en-group": {
"Name": "audio-en-group",
"Parameters": {
"AdaptationSet": "{\"Lang\":\"english\", \"Group\":\"AudioGroupEnglish\"}"
},
"Type": "AudioGroup"
},
"audio-cn-group": {
"Name": "audio-cn-group",
"Parameters": {
"AdaptationSet": "{\"Lang\":\"chinese\", \"Group\":\"AudioGroupChinese\"}"
},
"Type": "AudioGroup"
},
"subtitle-en-group": {
"Name": "subtitle-en-group",
"Parameters": {
"AdaptationSet": "{\"Lang\":\"english\", \"Group\":\"SubtitleENGroup\"}"
},
"Type": "SubtitleGroup"
},
"subtitle-cn-group": {
"Name": "subtitle-cn-group",
"Parameters": {
"AdaptationSet": "{\"Lang\":\"chinese\", \"Group\":\"SubtitleCNGroup\"}"
},
"Type": "SubtitleGroup"
},
"videoTransLD": {
"Name": "videoTransLD",
"Parameters": {
"Outputs": "[{\"TemplateId\":\"d053297fc44f9dd6becd4a98d1c42f50\",\"Audio\":{\"Remove\":\"true\"}}]",
"Representation": "{\"Id\":\"270pLD\", \"URI\":\"videoLD/xx.mpd\"}"
},
"Type": "Transcode"
},
"videoTransSD": {
"Name": "videoTransSD",
"Parameters": {
"Outputs": "[{\"TemplateId\":\"d861b90f6c0aed8f81095e5c5b857cba\",\"Audio\":{\"Remove\":\"true\"}}]",
"Representation": "{\"Id\":\"480pSD\", \"URI\":\"videoSD/xx.mpd\"}"
},
"Type": "Transcode"
},
"videoTransHD": {
"Name": "videoTransHD",
"Parameters": {
"Outputs": "[{\"TemplateId\":\"117b3ae88efbc97df372cfd9a0e1ff4c\",\"Audio\":{\"Remove\":\"true\"}}]",
"Representation": "{\"Id\":\"720pHD\", \"URI\":\"videoHD/xx.mpd\"}"
},
"Type": "Transcode"
},
"audioCNTransNode": {
"Name": "audioCNTransNode",
"Parameters": {
"Outputs": "[{\"TemplateId\":\"d053297fc44f9dd6becd4a98d1c42f50\",\"AudioStreamMap\":\"0:a:0\",\"Video\":{\"Remove\":\"true\"}}]",
"Representation": "{\"Id\":\"chinese128k\", \"URI\":\"audiocn/cn-abc.mpd\"}"
},
"Type": "Transcode"
},
"audioENTransNode": {
"Name": "audioENTransNode",
"Parameters": {
"Outputs": "[{\"TemplateId\":\"d053297fc44f9dd6becd4a98d1c42f50\",\"AudioStreamMap\":\"0:a:1\",\"Video\":{\"Remove\":\"true\"}}]",
"Representation": "{\"Id\":\"english128k\", \"URI\":\"audioen/en-abc.mpd\"}"
},
"Type": "Transcode"
},
"subtitleENNode": {
"Name": "subtitleENNode",
"Parameters": {
"InputConfig": "{\"Format\":\"vtt\",\"InputFile\":{\"URL\":\"http://bucketname.oss-cn-hangzhou.aliyuncs.com/dashpackage/subtitle/Subtitle.EN.vtt\"}}",
"Representation": "{\"Id\":\"subtitle-english\", \"URI\":\"subtitle/en-xx.vtt\"}"
},
"Type": "Transcode"
},
"subtitleCNNode": {
"Name": "subtitleCNNode",
"Parameters": {
"InputConfig": "{\"Format\":\"vtt\",\"InputFile\":{\"URL\":\"http://bucketname.oss-cn-hangzhou.aliyuncs.com/dashpackage/subtitle/Subtitle.CN.vtt\"}}",
"Representation": "{\"Id\":\"subtitle-chinese\", \"URI\":\"subtitle/cn-xx.vtt\"}"
},
"Type": "Transcode"
},
"act-report": {
"Name": "act-report",
"Parameters": {
"PublishType": "Auto"
},
"Type": "Report"
},
"act-start": {
"Name": "act-start",
"Parameters": {
"PipelineId": "cc7fcef2562e4abc9332d491f93399d2",
"InputFile": "{\"Bucket\":\"inputbucketname\",\"Location\":\"oss-cn-hangzhou\",\"ObjectPrefix\":\"package/dash/\"}"
},
"Type": "Start"
},
"generateMasterPlayListAct": {
"Name": "generateMasterPlayListAct",
"Parameters": {},
"Type": "GenerateMasterPlayList"
}
},
"Dependencies": {
"audio-en-group": ["audioENTransNode"],
"video-group": ["videoTransLD", "videoTransSD", "videoTransHD"],
"audio-cn-group": ["audioCNTransNode"],
"audioCNTransNode": ["generateMasterPlayListAct"],
"subtitleENNode": ["generateMasterPlayListAct"],
"act-package": ["audio-en-group", "audio-cn-group", "subtitle-cn-group", "subtitle-en-group", "video-group"],
"act-report": [],
"videoTransSD": ["generateMasterPlayListAct"],
"videoTransHD": ["generateMasterPlayListAct"],
"subtitle-en-group": ["subtitleENNode"],
"subtitle-cn-group": ["subtitleCNNode"],
"subtitleCNNode": ["generateMasterPlayListAct"],
"act-start": ["act-package"],
"videoTransLD": ["generateMasterPlayListAct"],
"generateMasterPlayListAct": ["act-report"],
"audioENTransNode": ["generateMasterPlayListAct"]
}
}
範例程式碼
- 建立HLS打包工作流程。
- 新增媒體。