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

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

最終更新日:Sep 02, 2026

Intelligent Media Services (IMS) を使用して MP4 ファイルをトランスコーディングし、複数のオーディオトラックを含めて、各トラックに言語を割り当てます。

ワークフロー

image

出力ファイル構造の例:

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 がアクティブ化されている必要があります。詳細については、「サービスの有効化」をご参照ください。

事前準備

IMS の基本設定

  • ストレージ設定:Object Storage Service (OSS) バケットを IMS に紐付けます。詳細については、「ストレージアドレスの設定」をご参照ください。

  • コールバック設定:HTTP または Message Notification Service (MNS) コールバックを設定して、タスクステータスの通知を受信します。コールバックメソッドとイベントの詳細については、「コールバックイベントの概要」をご参照ください。

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

操作手順

image

要件の例

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

ビデオ解像度:360p/540p/720p/1080p

オーディオ:HE-AAC、64 kbps (デフォルト設定)。

設定例

以下のように、4 つのビデオ解像度用のトランスコーディングテンプレートを作成します。手順については、「トランスコーディングテンプレートの作成」をご参照ください。

説明

Narrowband 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*

  • 必要に応じて他のパラメーターを設定します。

トランスコーディングタスクの送信

SubmitMediaConvertJob API を呼び出して、トランスコーディングタスクを送信します。

オーディオパラメーター

パラメーター

タイプ

説明

InputRef

String

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

LanguageControl

String

出力ストリームの言語タグの設定方法を制御します。有効値:

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

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

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

Language

String

オーディオトラックの ISO 639-2 言語コードです。

Remove

String

オーディオストリームを削除するかどうか。

Codec

String

オーディオコーデックです。

Profile

String

オーディオエンコーディングプロファイルです。

Bitrate

String

出力オーディオのビットレートです。

Samplerate

String

サンプルレートです。

Channels

String

オーディオチャンネル数です。

Volume

Object

音量制御設定です。

シナリオ 1:元のオーディオを保持

説明
  1. Inputs 配列は 3 つのソースを指定します。デフォルトのオーディオを持つメインビデオファイル (video)、個別の英語オーディオファイル (EnglishAudio)、および個別の日本語オーディオファイル (JapaneseAudio) です。

  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 とタグ付けされたオーディオトラックを選択します。出力オーディオトラックでは LanguageControl を InputFirst に設定し、入力から言語タグを継承します。

{
  "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 の場合、タスクが正常に完了したことを示します。少なくとも 1 つのサブタスクが成功した場合、親タスクは成功したと見なされます。

TriggerSource

String

いいえ

トリガーソースです。API はタスクが API 呼び出しによって送信されたことを示し、IceWorkflow はタスクがワークフローによってトリガーされたことを示します。

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\"}"
}