すべてのプロダクト
Search
ドキュメントセンター

Intelligent Media Services:マルチトラック MP4 トランスコーディングと言語タグ付け

最終更新日:Apr 29, 2026

このトピックでは、Intelligent Media Services (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)

前提条件

Intelligent Media Services (IMS) を有効化しました。詳細については、「サービスの有効化」をご参照ください。

事前準備

IMS の基本構成

  • ストレージ構成:Object Storage Service (OSS) バケットを IMS にバインドします。詳細については、「ストレージの場所の構成」をご参照ください。

  • コールバック構成:HTTP または Message Notification Service (MNS) コールバックを設定して、ジョブステータスの通知を受け取ります。コールバック方式およびイベントの詳細については、「コールバックイベントの概要」をご参照ください。

トランスコーディングテンプレート

操作手順

要件例

コーデック:H.264/H.265

映像解像度:360p/540p/720p/1080p

音声:64 kbps の HE-AAC(デフォルト構成)

構成例

この例では、4 種類の映像解像度向けにトランスコーディングテンプレートを作成する方法を示します。手順については、「トランスコーディングテンプレートの作成」をご参照ください。

説明

狭帯域 HD™ トランスコーディングを使用するには、表に基づいて対応するテンプレートを作成したうえで、Alibaba Cloud にバックエンド構成のスペックアップをリクエストするため、チケットを送信してください。

H.264

トランスコーディングテンプレート

コーデック

コンテナ形式

その他のパラメーター

Video-360P

H.264

mp4

  • 解像度(長辺固定):640*

  • 必要に応じてその他のパラメーターを構成します。

Video-540P

H.264

mp4

  • 解像度(長辺固定):960*

  • 必要に応じてその他のパラメーターを構成します。

Video-720P

H.264

mp4

  • 解像度(長辺固定):1280*

  • 必要に応じてその他のパラメーターを構成します。

Video-1080P

H.264

mp4

  • 解像度(長辺固定):1920*

  • 必要に応じてその他のパラメーターを構成します。

H.265

トランスコーディングテンプレート

コーデック

コンテナ形式

その他のパラメーター

Video-360P

H.265

mp4

  • 解像度(長辺固定):640*

  • 必要に応じてその他のパラメーターを構成します。

Video-540P

H.265

mp4

  • 解像度(長辺固定):960*

  • 必要に応じてその他のパラメーターを構成します。

Video-720P

H.265

mp4

  • 解像度(長辺固定):1280*

  • 必要に応じてその他のパラメーターを構成します。

Video-1080P

H.265

mp4

  • 解像度(長辺固定):1920*

  • 必要に応じてその他のパラメーターを構成します。

トランスコーディングジョブの送信

Intelligent Media Services にトランスコーディングジョブを送信するには、SubmitMediaConvertJob API オペレーションを呼び出します。

音声パラメーター

パラメーター

タイプ

説明

InputRef

String

この音声トラックの入力ストリーム名です。Inputs 配列または AudioSelector 配列で定義された Name と一致する必要があります。

LanguageControl

String

出力ストリームの言語タグ設定ポリシーです。有効な値は以下のとおりです。

  • InputFirst:入力ストリームの言語タグを使用します。入力ストリームに言語タグがない場合は、Language パラメーターで指定されたタグを使用します。

  • ConfiguredLanguage パラメーターで指定された言語タグを使用します。

  • None:言語タグを追加しません。これがデフォルト値です。

Language

String

音声トラックの ISO 639-2 言語コードです。

Remove

String

音声ストリームを削除するかどうかを指定します。

Codec

String

音声コーデックです。

Profile

String

音声エンコードプロファイルです。

Bitrate

String

出力音声のビットレートです。

Samplerate

String

サンプルレートです。

Channels

String

音声チャンネル数です。

Volume

Object

ボリュームコントロール設定です。

シナリオ 1:元の音声を保持

説明
  1. Inputs 配列には、デフォルト音声付きのメイン動画ファイル(video)、英語音声ファイル(EnglishAudio)、日本語音声ファイル(JapaneseAudio)の 3 つのソースが指定されています。

  2. OutputGroups.GroupConfig では、"Type": "File" により出力を単一のコンテナファイルとして指定しています。

  3. 各トラックは InputRef を使用してソース入力を指定し、LanguageControl を使用して言語タグ付けのロジックを決定します。

{
  "Inputs": [
    {
      "Name": "video",
      "InputFile": {"Type": "OSS", "Media": "https://<your-bucket>.<public-endpoint>/<video-with-default-audio.mp4>"}
    },
    {
      "Name": "EnglishAudio",
      "InputFile": {"Type": "OSS", "Media": "https://<your-bucket>.<public-endpoint>/<english-audio.mp4>"}
    },
    {
      "Name": "JapaneseAudio",
      "InputFile": {"Type": "OSS", "Media": "https://<your-bucket>.<public-endpoint>/<japanese-audio.mp4>"}
    }
  ],
  "OutputGroups": [
    {
      "GroupConfig": {
        "Type": "File",
        "OutputFileBase": {
          "Type": "OSS",
          "Media": "https://<your-bucket>.<public-endpoint>/<output-path>/"
        }
      },
      "Outputs": [
        {
          "Name": "360P",
          "OutputFileName": "video/360p/360p",
          "TemplateId": "Video-360P",
          "OverrideParams": {
            "Audios": [
              {
                "InputRef": "video",
                "LanguageControl": "InputFirst"
              }, {
                "InputRef": "EnglishAudio",
                "LanguageControl": "Configured",
                "Language": "eng"
              }, {
                "InputRef": "JapaneseAudio",
                "LanguageControl": "Configured",
                "Language": "jpn"
              }
            ]
          }
        }
      ]
    }
  ]
}

シナリオ 2:元の音声を削除

説明

この構成はシナリオ 1と同様ですが、Audios 配列から元の動画の音声トラックへの参照を省略しています。そのため、出力ファイルには英語および日本語の音声トラックのみが含まれます。

{
  "Inputs": [
    {
      "Name": "video",
      "InputFile": {"Type": "OSS", "Media": "https://<your-bucket>.<public-endpoint>/<video-with-default-audio.mp4>"}
    },
    {
      "Name": "EnglishAudio",
      "InputFile": {"Type": "OSS", "Media": "https://<your-bucket>.<public-endpoint>/<english-audio.mp4>"}
    },
    {
      "Name": "JapaneseAudio",
      "InputFile": {"Type": "OSS", "Media": "https://<your-bucket>.<public-endpoint>/<japanese-audio.mp4>"}
    }
  ],
  "OutputGroups": [
    {
      "GroupConfig": {
        "Type": "File",
        "OutputFileBase": {
          "Type": "OSS",
          "Media": "https://<your-bucket>.<public-endpoint>/<output-path>/"
        }
      },
      "Outputs": [
        {
          "Name": "360P",
          "OutputFileName": "video/360p/360p",
          "TemplateId": "Video-360P",
          "OverrideParams": {
            "Audios": [
              {
                "InputRef": "EnglishAudio",
                "LanguageControl": "Configured",
                "Language": "eng"
              }, {
                "InputRef": "JapaneseAudio",
                "LanguageControl": "Configured",
                "Language": "jpn"
              }
            ]
          }
        }
      ]
    }
  ]
}

シナリオ 3:言語による音声選択

この例では、AudioSelector パラメーターを使用して、JapaneseFile 入力から jpn 言語タグを持つ音声トラックを選択しています。対応する出力音声トラックでは、LanguageControlInputFirst に設定することで、入力から自動的に言語タグを継承します。

{
  "Inputs": [
    {
      "Name": "video",
      "InputFile": {"Type": "OSS", "Media": "https://<your-bucket>.<public-endpoint>/<video-with-default-audio.mp4>"}
    },
    {
      "Name": "EnglishAudio",
      "InputFile": {"Type": "OSS", "Media": "https://<your-bucket>.<public-endpoint>/<english-audio.mp4>"}
    },
    {
      "Name": "JapaneseFile",
      "InputFile": {"Type": "OSS", "Media": "https://<your-bucket>.<public-endpoint>/<multilingual-file.mp4>"},
      "AudioSelector": [{
        "Name": "JapaneseAudio",
        "Rule": "tag",
        "TagConfig": {"language": "jpn"}
      }]
    }
  ],
  "OutputGroups": [
    {
      "GroupConfig": {
        "Type": "File",
        "OutputFileBase": {
          "Type": "OSS",
          "Media": "https://<your-bucket>.<public-endpoint>/<output-path>/"
        }
      },
      "Outputs": [
        {
          "Name": "360P",
          "OutputFileName": "video/360p/360p",
          "TemplateId": "Video-360P",
          "OverrideParams": {
            "Audios": [
              {
                "InputRef": "video",
                "LanguageControl": "InputFirst"
              }, {
                "InputRef": "EnglishAudio",
                "LanguageControl": "Configured",
                "Language": "eng"
              }, {
                "InputRef": "JapaneseAudio",
                "LanguageControl": "InputFirst"
              }
            ]
          }
        }
      ]
    }
  ]
}

トランスコーディングジョブの照会

トランスコーディングジョブの詳細を取得するには、GetMediaConvertJob API オペレーションを呼び出します。

コールバックイベント

イベントタイプ:MediaConvertComplete

構成方法:このイベントはコンソール上で構成できません。SetEventCallback API オペレーションを呼び出して構成する必要があります。

主なコールバックパラメーター

パラメーター

タイプ

必須

説明

Name

String

はい

親ジョブの名前です。

JobId

String

はい

ジョブ ID です。

Status

String

はい

ジョブステータスです。Success の値は、ジョブが正常に完了したことを示します。サブジョブのいずれかが成功すれば、親ジョブは成功とみなされます。

TriggerSource

String

いいえ

トリガー元です。API は、ジョブが API 呼び出しによって送信されたことを示します。

FinishTime

String

いいえ

UTC 形式での完了時刻:yyyy-MM-ddTHH:mm:ssZ

UserData

String

いいえ

ジョブ送信時に指定したユーザーデータです。このデータはそのまま渡され、コールバックで返されます。

{
	"FinishTime": "2025-05-09T08:03:21Z",
	"JobId": "5d37357cb3a44d10ba33c52760c896cd",
	"Status": "Success",
	"TriggerSource": "IceWorkflow",
	"UserData": "{\"ImsSrc\":\"Workflow\",\"TaskId\":\"e89a955d88ca47f0b9b79c562e5c622f\"}"
}