Intelligent Media Services (IMS) を使用すると、複数のオーディオトラックを 1 つの 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 |
|
Video-540P | H.264 | .mp4 |
|
Video-720P | H.264 | .mp4 |
|
Video-1080P | H.264 | .mp4 |
|
H.265
テンプレート | コーデック | コンテナフォーマット | その他のパラメータ |
Video-360P | H.265 | .mp4 |
|
Video-540P | H.265 | .mp4 |
|
Video-720P | H.265 | .mp4 |
|
Video-1080P | H.265 | .mp4 |
|
トランスコーディングタスクを送信する
SubmitMediaConvertJob を呼び出して、トランスコーディングタスクを送信します。
Audios パラメータ
フィールド | タイプ | 説明 |
InputRef | 文字列 | このオーディオトラックに使用する入力ストリームの名前。 Inputs または AudioSelector 配列で定義された Name と一致する必要があります。 |
LanguageControl | 文字列 | 出力オーディオトラックの言語タグの決定方法を指定します。 有効な値:
|
Language | 文字列 | オーディオトラックに適用する言語コード。 有効な ISO 639-2 コードである必要があります。 |
Remove | 文字列 | 出力ファイルからオーディオトラックを削除するかどうかを指定します。 |
Codec | 文字列 | オーディオコーデック。 |
Profile | 文字列 | オーディオコーデックプロファイル。 |
Bitrate | 文字列 | 出力ファイルのオーディオビットレート。 |
Samplerate | 文字列 | オーディオサンプルレート。 |
Channels | 文字列 | オーディオチャンネル数。 |
Volume | オブジェクト | ボリュームコントロール設定。 |
シナリオ 1: 元のオーディオトラックを保持する
この例では、ビデオを元のオーディオと 2 つの追加言語トラックと組み合わせて 1 つの出力ファイルにする方法を示します。
Inputs配列では、3 つのソースが定義されています。 デフォルトのオーディオトラックを持つビデオファイル (video)、英語のオーディオファイル (EnglishAudio)、日本語のオーディオファイル (JapaneseAudio) です。OutputGroups.GroupConfigでは、TypeがFileに設定されており、出力グループが 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 | 文字列 | はい | タスクステータス。 | |
TriggerSource | 文字列 | いいえ | タスクをトリガーしたソース。 | |
FinishTime | 文字列 | いいえ | タスクが完了した時刻 (UTC 形式)。 | |
UserData | 文字列 | いいえ | タスクの送信時に指定されたカスタム文字列。 コールバックで渡されて返されます。 | |
例
{
"FinishTime": "2025-05-09T08:03:21Z", // 完了時刻
"JobId": "5d37357cb3a44d10ba33c52760c896cd", // ジョブID
"Status": "Success", // ステータス
"TriggerSource": "IceWorkflow", // トリガーソース
"UserData": "{\"ImsSrc\":\"Workflow\",\"TaskId\":\"e89a955d88ca47f0b9b79c562e5c622f\"}" // ユーザーデータ
}