本文檔指導開發人員通過阿里雲IMS實現MP4多音軌轉碼及音軌語言設定。
轉碼流程
結果檔案結構樣本
Duration: 00:00:31.40, start: 0.000000, bitrate: 816 kb/s
Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 960x540 [SAR 1:1 DAR 16:9], 663 kb/s, 25 fps, 25 tbr, 12800 tbn (default)
Stream #0:1[0x2](zho): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 46 kb/s (default)
Stream #0:2[0x3](eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 46 kb/s (default)
Stream #0:3[0x4](jpn): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 46 kb/s (default)前提條件
已開通智能媒體服務。請參見開通服務。
配置準備
IMS基礎配置
轉碼模板配置
配置流程
需求樣本
編碼協議:H264/H265
視頻解析度:360P/540P/720P/1080P
音頻:HE-AAC 64Kbps(預設配置)。
配置樣本
以四種視頻清晰度為例,按照下表建立轉碼模板,建立模板操作請參見建立轉碼模板。
如需進行窄帶高清轉碼,請參照表格建立相應模板,隨後提交工單,由阿里雲在後台進行升級配置。
H264
轉碼模板 | 編碼協議 | 封裝格式 | 其他配置 |
視頻-360P | H264 | mp4 |
|
視頻-540P | H264 | mp4 |
|
視頻-720P | H264 | mp4 |
|
視頻-1080P | H264 | mp4 |
|
H265
轉碼模板 | 編碼協議 | 封裝格式 | 其他配置 |
視頻-360P | H265 | mp4 |
|
視頻-540P | H265 | mp4 |
|
視頻-720P | H265 | mp4 |
|
視頻-1080P | H265 | mp4 |
|
發起轉碼任務
調用SubmitMediaConvertJob介面,提交視頻或音頻檔案的轉碼任務到智能媒體服務。
參數說明(Audios)
參數 | 類型 | 說明 |
InputRef | String | 轉碼過程中所使用的流資訊,其值為 Input 或 AudioSelector 中的name。 |
LanguageControl | String | 語言選擇策略:該策略用於確定輸出資料流的語言tag,其取值如下:
|
Language | String | 指定的語言代碼。需要遵循ISO 639-2標準。 |
Remove | String | 是否刪除音頻流。 |
Codec | String | 音頻編解碼格式。 |
Profile | String | 音頻編碼層級。 |
Bitrate | String | 輸出檔案的音頻碼率。 |
Samplerate | String | 採樣率。 |
Channels | String | 聲道數。 |
Volume | Object | 音量控制。 |
情境1:保留原視頻音頻
在 input 中分別指定了包含預設語言的視頻和英文、日語兩種語言音訊檔案地址作為輸入。
在 OutputGroups.GroupConfig 中指定 Type 為 File,表示這個 Group 是單檔案封裝的輸出。
在 OutputGroups.Outputs.OverrideParams 中指定 Audios 參數,表示輸出檔案包含多個音頻軌道。其中,每個音軌通過 InputRef 參數指定來源的輸入檔案,通過 LanguageControl 參數來指定語言標籤邏輯。
{
"Inputs": [
{
"Name": "video",
"InputFile": {"Type": "OSS", "Media": "https://<Bucket>.<外網Endpoint>/<視頻1中文>"}
},
{
"Name": "EnglishAudio",
"InputFile": {"Type": "OSS", "Media": "https://<Bucket>.<外網Endpoint>/<視頻1英文>"}
},
{
"Name": "JapaneseAudio",
"InputFile": {"Type": "OSS", "Media": "https://<Bucket>.<外網Endpoint>/<視頻1日語>"}
}
],
"OutputGroups": [
{
"GroupConfig": {
"Type": "File",
"OutputFileBase": {
"Type": "OSS",
"Media": "https://<Bucket>.<外網Endpoint>/<URI>/"
}
},
"Outputs": [
{
"Name": "360P",
"OutputFileName": "video/360p/360p",
"TemplateId": "視頻-360P",
"OverrideParams": {
"Audios": [
{
"InputRef": "video",
"LanguageControl": "InputFirst"
}, {
"InputRef": "EnglishAudio",
"LanguageControl": "Configured",
"Language": "eng"
}, {
"InputRef": "JapaneseAudio",
"LanguageControl": "Configured",
"Language": "jpn"
}
]
}
}
]
}
]
}情境2:不保留原視頻音頻
相較於情境1,在 Audios 中去除了對來源為video檔案音軌的配置。
{
"Inputs": [
{
"Name": "video",
"InputFile": {"Type": "OSS", "Media": "https://<Bucket>.<外網Endpoint>/<視頻1中文>"}
},
{
"Name": "EnglishAudio",
"InputFile": {"Type": "OSS", "Media": "https://<Bucket>.<外網Endpoint>/<視頻1英文>"}
},
{
"Name": "JapaneseAudio",
"InputFile": {"Type": "OSS", "Media": "https://<Bucket>.<外網Endpoint>/<視頻1日語>"}
}
],
"OutputGroups": [
{
"GroupConfig": {
"Type": "File",
"OutputFileBase": {
"Type": "OSS",
"Media": "https://<Bucket>.<外網Endpoint>/<URI>/"
}
},
"Outputs": [
{
"Name": "360P",
"OutputFileName": "video/360p/360p",
"TemplateId": "視頻-360P",
"OverrideParams": {
"Audios": [
{
"InputRef": "EnglishAudio",
"LanguageControl": "Configured",
"Language": "eng"
}, {
"InputRef": "JapaneseAudio",
"LanguageControl": "Configured",
"Language": "jpn"
}
]
}
}
]
}
]
}情境3: 通過語言篩選輸入音頻
{
"Inputs": [
{
"Name": "video",
"InputFile": {"Type": "OSS", "Media": "https://<Bucket>.<外網Endpoint>/<視頻1中文>"}
},
{
"Name": "EnglishAudio",
"InputFile": {"Type": "OSS", "Media": "https://<Bucket>.<外網Endpoint>/<視頻1英文>"}
},
{
"Name": "JapaneseFile",
"InputFile": {"Type": "OSS", "Media": "https://<Bucket>.<外網Endpoint>/<視頻1日語>"},
"AudioSelector": [{
"Name": "JapaneseFile",
"Rule": "tag",
"TagConfig": {"language": "jpn"}
}]
}
],
"OutputGroups": [
{
"GroupConfig": {
"Type": "File",
"OutputFileBase": {
"Type": "OSS",
"Media": "https://<Bucket>.<外網Endpoint>/<URI>/"
}
},
"Outputs": [
{
"Name": "360P",
"OutputFileName": "video/360p/360p",
"TemplateId": "視頻-360P",
"OverrideParams": {
"Audios": [
{
"InputRef": "video",
"LanguageControl": "InputFirst"
}, {
"InputRef": "EnglishAudio",
"LanguageControl": "Configured",
"Language": "eng"
}, {
"InputRef": "JapaneseAudio",
"LanguageControl": "InputFirst"
}
]
}
}
]
}
]
}查詢轉碼結果
調用GetMediaConvertJob介面擷取轉碼任務詳情。
回調事件
回調事件名稱
事件類型:EventType:MediaConvertComplete
配置方式:控制台尚未開發該事件的選擇功能,使用者可通過SetEventCallback介面進行配置。
關鍵字段說明
參數名稱 | 類型 | 必選 | 描述 | |
Name | String | 是 | 主任務名稱。 | |
JobId | String | 是 | 任務id。 | |
Status | String | 是 | 任務結果中,"Success"表示成功。如果在子任務中有任一任務成功,則整體結果視為成功。 | |
TriggerSource | String | 否 | 觸發來源,API指的是API的提交操作。 | |
FinishTime | String | 否 | 完成時間,格式應與EventTime相同。 | |
UserData | string | 否 | 使用者在提交轉碼任務時需進行指定。 | |
樣本
{
"FinishTime": "2025-05-09T08:03:21Z",
"JobId": "5d37357cb3a44d10ba33c52760c896cd",
"Status": "Success",
"TriggerSource": "IceWorkflow",
"UserData": "{\"ImsSrc\":\"Workflow\",\"TaskId\":\"e89a955d88ca47f0b9b79c562e5c622f\"}"
}