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

Intelligent Media Services:複数のオーディオトラックを MP4 ファイルにトランスコードする

最終更新日:Sep 04, 2025

Intelligent Media Services (IMS) を使用すると、複数のオーディオトラックを 1 つの MP4 ファイルにトランスコードおよびパッケージ化し、各トラックの言語を設定できます。

ワークフロー

  • オーディオまたはビデオ(言語 4)
  • オーディオまたはビデオ(言語 2)
  • ビデオ(デフォルト言語)
  • 開始
  • 入力パラメータ{......}
  • 入力ファイル
  • 終了
  • 出力video.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 がアクティブ化されていること。 詳細については、「IMS をアクティブ化する」をご参照ください。

    構成

    基本構成

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

    • コールバック: タスクステータス通知を受信するための HTTP または MNS コールバックを構成します。 コールバックメソッドとイベントについては、「概要」をご参照ください。

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

    手順

    要件例

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

    解像度: 360P、540P、720P、1080P

    オーディオ: HE-AAC、64 Kbps (デフォルト)

    構成例

    この例では、必要な 4 つのビデオ解像度のトランスコーディングテンプレートを構成する方法を示します。 テンプレートの作成方法については、「トランスコーディングテンプレートを作成する」をご参照ください。

    説明

    狭帯域 HD™ トランスコーディングを実行するには、次の表に基づいて基本テンプレートを作成します。 次に、チケットを送信 して、バックエンドのスペックアップを行います。

    H.264

    テンプレート

    コーデック

    コンテナフォーマット

    その他のパラメータ

    Video-360P

    H.264

    .mp4

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

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

    Video-540P

    H.264

    .mp4

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

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

    Video-720P

    H.264

    .mp4

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

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

    Video-1080P

    H.264

    .mp4

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

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

    H.265

    テンプレート

    コーデック

    コンテナフォーマット

    その他のパラメータ

    Video-360P

    H.265

    .mp4

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

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

    Video-540P

    H.265

    .mp4

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

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

    Video-720P

    H.265

    .mp4

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

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

    Video-1080P

    H.265

    .mp4

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

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

    トランスコーディングタスクを送信する

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

    Audios パラメータ

    フィールド

    タイプ

    説明

    InputRef

    文字列

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

    LanguageControl

    文字列

    出力オーディオトラックの言語タグの決定方法を指定します。 有効な値:

    • InputFirst: 入力ストリームから言語タグを継承します。 入力が言語タグを持っていない場合、Language パラメータで指定されたタグが使用されます。

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

    • None (デフォルト): 出力トラックに言語タグを追加しません。

    Language

    文字列

    オーディオトラックに適用する言語コード。 有効な ISO 639-2 コードである必要があります。

    Remove

    文字列

    出力ファイルからオーディオトラックを削除するかどうかを指定します。

    Codec

    文字列

    オーディオコーデック。

    Profile

    文字列

    オーディオコーデックプロファイル。

    Bitrate

    文字列

    出力ファイルのオーディオビットレート。

    Samplerate

    文字列

    オーディオサンプルレート。

    Channels

    文字列

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

    Volume

    オブジェクト

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

    シナリオ 1: 元のオーディオトラックを保持する

    この例では、ビデオを元のオーディオと 2 つの追加言語トラックと組み合わせて 1 つの出力ファイルにする方法を示します。

    • Inputs 配列では、3 つのソースが定義されています。 デフォルトのオーディオトラックを持つビデオファイル (video)、英語のオーディオファイル (EnglishAudio)、日本語のオーディオファイル (JapaneseAudio) です。

    • OutputGroups.GroupConfig では、TypeFile に設定されており、出力グループが 1 つのコンテナファイルに多重化されることを示しています。

    • OutputGroups.Outputs.OverrideParams では、Audios 配列が出力の複数のオーディオトラックを定義します。 配列内の各トラックについて:

      • InputRef は、Inputs 配列のソースファイルを参照します。

      • LanguageControl は、そのトラックの言語タグの設定方法を決定します。

    {
      "Inputs": [
        {
          "Name": "video",
          "InputFile": {"Type": "OSS", "Media": "https://<Bucket>.<Public Endpoint>/<Video1 Chinese>"} // 入力ファイル1 中国語
        },
        {
          "Name": "EnglishAudio",
          "InputFile": {"Type": "OSS", "Media": "https://<Bucket>.<Public Endpoint>/<Video1 English>"} // 入力ファイル1 英語
        },
        {
          "Name": "JapaneseAudio",
          "InputFile": {"Type": "OSS", "Media": "https://<Bucket>.<Public Endpoint>/<Video1 Japanese>"} // 入力ファイル1 日本語
        }
      ],
      "OutputGroups": [
        {
          "GroupConfig": {
            "Type": "File", // ファイルに出力
            "OutputFileBase": {
              "Type": "OSS",
              "Media": "https://<Bucket>.<Public Endpoint>/<URI>/"
            }
          },
          "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 配列のこの構成では、元の video 入力のオーディオへの参照が削除されています。

    その結果、ソースビデオのオーディオは最終出力から除外されます。 出力は、指定された英語と日本語のオーディオトラックのみと多重化されます。

    {
      "Inputs": [
        {
          "Name": "video",
          "InputFile": {"Type": "OSS", "Media": "https://<Bucket>.<Public Endpoint>/<Video1 Chinese>"} // 入力ファイル1 中国語
        },
        {
          "Name": "EnglishAudio",
          "InputFile": {"Type": "OSS", "Media": "https://<Bucket>.<Public Endpoint>/<Video1 English>"} // 入力ファイル1 英語
        },
        {
          "Name": "JapaneseAudio",
          "InputFile": {"Type": "OSS", "Media": "https://<Bucket>.<Public Endpoint>/<Video1 Japanese>"} // 入力ファイル1 日本語
        }
      ],
      "OutputGroups": [
        {
          "GroupConfig": {
            "Type": "File", // ファイルに出力
            "OutputFileBase": {
              "Type": "OSS",
              "Media": "https://<Bucket>.<Public Endpoint>/<URI>/"
            }
          },
          "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) としてタグ付けされたトラックを選択します。

    {
      "Inputs": [
        {
          "Name": "video",
          "InputFile": {"Type": "OSS", "Media": "https://<Bucket>.<Public Endpoint>/<Video1 Chinese>"} // 入力ファイル1 中国語
        },
        {
          "Name": "EnglishAudio",
          "InputFile": {"Type": "OSS", "Media": "https://<Bucket>.<Public Endpoint>/<Video1 English>"} // 入力ファイル1 英語
        },
        {
          "Name": "JapaneseFile",
          "InputFile": {"Type": "OSS", "Media": "https://<Bucket>.<Public Endpoint>/<Video1 Japanese>"}, // 入力ファイル1 日本語
          "AudioSelector": [{ // オーディオセレクタ
            "Name": "JapaneseFile",
            "Rule": "tag", // タグに基づいて選択
            "TagConfig": {"language": "jpn"} // 日本語タグを選択
          }]
        }
      ],
      "OutputGroups": [
        {
          "GroupConfig": {
            "Type": "File", // ファイルに出力
            "OutputFileBase": {
              "Type": "OSS",
              "Media": "https://<Bucket>.<Public Endpoint>/<URI>/"
            }
          },
          "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 を呼び出して、トランスコーディングタスクの詳細を取得します。

    コールバックイベント

    イベントタイプ: MediaConvertComplete

    構成方法: このイベントはコンソールで構成できません。 SetEventCallback を呼び出して構成します。

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

    パラメータ

    タイプ

    必須

    説明

    Name

    文字列

    はい

    メインタスクの名前。

    JobId

    文字列

    はい

    タスクの ID。

    Status

    文字列

    はい

    タスクステータス。 Success は、少なくとも 1 つの出力 (サブタスク) が成功したことを示します。

    TriggerSource

    文字列

    いいえ

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

    FinishTime

    文字列

    いいえ

    タスクが完了した時刻 (UTC 形式)。

    UserData

    文字列

    いいえ

    タスクの送信時に指定されたカスタム文字列。 コールバックで渡されて返されます。

    {
    	"FinishTime": "2025-05-09T08:03:21Z", // 完了時刻
    	"JobId": "5d37357cb3a44d10ba33c52760c896cd", // ジョブID
    	"Status": "Success", // ステータス
    	"TriggerSource": "IceWorkflow", // トリガーソース
    	"UserData": "{\"ImsSrc\":\"Workflow\",\"TaskId\":\"e89a955d88ca47f0b9b79c562e5c622f\"}" // ユーザーデータ
    }