このトピックでは、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 |
|
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 |
|
トランスコーディングジョブの送信
Intelligent Media Services にトランスコーディングジョブを送信するには、SubmitMediaConvertJob API オペレーションを呼び出します。
音声パラメーター
パラメーター | タイプ | 説明 |
InputRef | String | この音声トラックの入力ストリーム名です。 |
LanguageControl | String | 出力ストリームの言語タグ設定ポリシーです。有効な値は以下のとおりです。
|
Language | String | 音声トラックの ISO 639-2 言語コードです。 |
Remove | String | 音声ストリームを削除するかどうかを指定します。 |
Codec | String | 音声コーデックです。 |
Profile | String | 音声エンコードプロファイルです。 |
Bitrate | String | 出力音声のビットレートです。 |
Samplerate | String | サンプルレートです。 |
Channels | String | 音声チャンネル数です。 |
Volume | Object | ボリュームコントロール設定です。 |
シナリオ 1:元の音声を保持
Inputs配列には、デフォルト音声付きのメイン動画ファイル(video)、英語音声ファイル(EnglishAudio)、日本語音声ファイル(JapaneseAudio)の 3 つのソースが指定されています。OutputGroups.GroupConfigでは、"Type": "File"により出力を単一のコンテナファイルとして指定しています。各トラックは
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 | はい | ジョブステータスです。 | |
TriggerSource | String | いいえ | トリガー元です。 | |
FinishTime | String | いいえ | UTC 形式での完了時刻: | |
UserData | String | いいえ | ジョブ送信時に指定したユーザーデータです。このデータはそのまま渡され、コールバックで返されます。 | |
例
{
"FinishTime": "2025-05-09T08:03:21Z",
"JobId": "5d37357cb3a44d10ba33c52760c896cd",
"Status": "Success",
"TriggerSource": "IceWorkflow",
"UserData": "{\"ImsSrc\":\"Workflow\",\"TaskId\":\"e89a955d88ca47f0b9b79c562e5c622f\"}"
}