全部產品
Search
文件中心

Intelligent Media Services:MP4多音軌轉碼及設定音軌語言

更新時間:Jul 22, 2025

本文檔指導開發人員通過阿里雲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基礎配置

  • 儲存配置:將OSS Bucket綁定至IMS服務,詳情請參見配置儲存地址

  • 回調配置:配置HTTP回調或MNS回調以接收任務狀態通知,關於回調方式和回調事件的基本資料請參見回調事件概述

轉碼模板配置

配置流程

需求樣本

編碼協議:H264/H265

視頻解析度:360P/540P/720P/1080P

音頻:HE-AAC 64Kbps(預設配置)。

配置樣本

以四種視頻清晰度為例,按照下表建立轉碼模板,建立模板操作請參見建立轉碼模板

說明

如需進行窄帶高清轉碼,請參照表格建立相應模板,隨後提交工單,由阿里雲在後台進行升級配置。

H264

轉碼模板

編碼協議

封裝格式

其他配置

視頻-360P

H264

mp4

  • 解析度(長邊固定,短邊自適應):640*

  • 其他按實際需求配置

視頻-540P

H264

mp4

  • 解析度(長邊固定,短邊自適應):960*

  • 其他按實際需求配置

視頻-720P

H264

mp4

  • 解析度(長邊固定,短邊自適應):1280*

  • 其他按實際需求配置

視頻-1080P

H264

mp4

  • 解析度(長邊固定,短邊自適應):1920*

  • 其他按實際需求配置

H265

轉碼模板

編碼協議

封裝格式

其他配置

視頻-360P

H265

mp4

  • 解析度(長邊固定,短邊自適應):640*

  • 其他按實際需求配置

視頻-540P

H265

mp4

  • 解析度(長邊固定,短邊自適應):960*

  • 其他按實際需求配置

視頻-720P

H265

mp4

  • 解析度(長邊固定,短邊自適應):1280*

  • 其他按實際需求配置

視頻-1080P

H265

mp4

  • 解析度(長邊固定,短邊自適應):1920*

  • 其他按實際需求配置

發起轉碼任務

調用SubmitMediaConvertJob介面,提交視頻或音頻檔案的轉碼任務到智能媒體服務。

參數說明(Audios

參數

類型

說明

InputRef

String

轉碼過程中所使用的流資訊,其值為 Input 或 AudioSelector 中的name。

LanguageControl

String

語言選擇策略:該策略用於確定輸出資料流的語言tag,其取值如下:

  • InputFirst:優先使用輸入資料流中的語言tag;若輸入資料流中不存在,則採用以下配置。

  • Configured:使用下方Language參數配置的語言tag。

  • None:不添加語言tag。預設選項。

Language

String

指定的語言代碼。需要遵循ISO 639-2標準。

Remove

String

是否刪除音頻流。

Codec

String

音頻編解碼格式。

Profile

String

音頻編碼層級。

Bitrate

String

輸出檔案的音頻碼率。

Samplerate

String

採樣率。

Channels

String

聲道數。

Volume

Object

音量控制。

情境1:保留原視頻音頻

說明
  1. 在 input 中分別指定了包含預設語言的視頻和英文、日語兩種語言音訊檔案地址作為輸入。

  2. 在 OutputGroups.GroupConfig 中指定 Type 為 File,表示這個 Group 是單檔案封裝的輸出。

  3. 在 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\"}"
}