Intelligent Media Services (IMS) を使用して、複数のオーディオトラックを含むメディアファイルをトランスコーディングおよびパッケージングし、様々なデバイスやプレーヤーに対応した多言語オーディオ・ビデオコンテンツを生成します。
トランスコーディングとパッケージングのワークフロー
パッケージングされたファイル構造の例:
#EXTM3U
# オーディオストリーム定義 (多言語)
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="Chinese",LANGUAGE="zh",DEFAULT=YES,URI="audio/chinese.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="English",LANGUAGE="en",DEFAULT=NO,URI="audio/english.m3u8"
# ビデオストリーム定義 (マルチビットレート)
#EXT-X-STREAM-INF:BANDWIDTH=400000,RESOLUTION=360x640,AUDIO="audio",CODECS="hvc1,mp4a.40.5"
video/360p.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=900000,RESOLUTION=720x1280,AUDIO="audio",CODECS="hvc1,mp4a.40.5"
video/720p.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2000000,RESOLUTION=1080x1920,AUDIO="audio",CODECS="hvc1,mp4a.40.5"
video/1080p.m3u8前提条件
Intelligent Media Services (IMS) がアクティブ化されていることを確認してください。手順については、「IMS のアクティブ化」をご参照ください。
設定
IMS の基本設定
ストレージ:Object Storage Service (OSS) バケットを IMS に関連付けます。詳細については、「ストレージの場所の設定」をご参照ください。
コールバック:HTTP または MNS コールバックを設定して、タスクのステータス通知を受信します。詳細については、「コールバックイベントの概要」をご参照ください。
トランスコーディングテンプレートの設定
設定手順
要件例
コーデック:H.264/H.265
ビデオ解像度:360p/540p/720p/1080p
オーディオ:64 kbps の HE-AAC (デフォルト設定)
設定例
以下の表に基づいて、必要な解像度ごとにトランスコーディングテンプレートを作成します。手順については、「トランスコーディングテンプレートの作成」をご参照ください。
Narrowband HD™ トランスコーディングを実行するには、表に基づいて対応するテンプレートを作成した後、チケットを送信して、Alibaba Cloud にバックエンド設定のアップグレードを依頼してください。
H.264
トランスコーディングテンプレート | コーデック | コンテナ形式 | その他の設定 |
Video-360P | H.264 | m3u8(.ts) |
|
Video-540P | H.264 | m3u8(.ts) |
|
Video-720P | H.264 | m3u8(.ts) |
|
Video-1080P | H.264 | m3u8(.ts) |
|
Audio-64Kbps | HE-AAC | m3u8(.ts) |
説明 このテンプレートはコンソールで作成できません。API を使用するか、チケットを送信してください。 |
H.265
推奨:fmp4 コンテナ形式を使用してください。これは Apple デバイスの標準であり、Safari に対応しています。
代替:.ts コンテナ形式も使用できますが、Safari には対応していません。
コンソールの制限:コンソールでは fmp4 コンテナ形式のストリームを作成できません。代わりに、m3u8 (ts) コンテナ形式でストリームを作成してください。その後、Alibaba Cloud がバックエンドで設定をアップグレードします。
トランスコーディングテンプレート | コーデック | コンテナ形式 | その他の設定 |
Video-360P | H.265 | m3u8(.fmp4) |
|
Video-540P | H.265 | m3u8(.fmp4) |
|
Video-720P | H.265 | m3u8(.fmp4) |
|
Video-1080P | H.265 | m3u8(.fmp4) |
|
Audio-64Kbps | HE-AAC | m3u8(.fmp4) |
説明 このテンプレートはコンソールで作成できません。API を使用するか、チケットを送信してください。 |
マルチビットレートトランスコーディングとパッケージングタスク
マルチビットレートタスクの送信
SubmitMediaConvertJob API を呼び出して、メディアファイルのトランスコーディングタスクを送信します。
HlsGroupConfig パラメーター
パラメーター | タイプ | 説明 |
Type | 文字列 | データストリームのタイプ。 有効な値:
|
Bandwidth | 文字列 | 帯域幅。このパラメーターは オプション です。デフォルトでは、ビットレート (bps) が使用されます。
|
AudioGroup | 文字列 | ビデオストリームによって参照されるオーディオグループ。 |
SubtitleGroup | 文字列 | ビデオストリームによって参照される字幕グループ。 |
Name | 文字列 | HLS マニフェストにおける出力ストリームの NAME 属性。 |
Group | 文字列 | HLS マニフェストにおける出力ストリームの GROUP_ID 属性。 デフォルトは |
Language | 文字列 | HLS マニフェストにおける出力ストリームの LANGUAGE 属性。 |
Default | ブール値 | これがデフォルトのストリームかどうかを指定します。 |
AutoSelect | ブール値 | ストリームを自動的に選択するかどうかを指定します。 |
Forced | ブール値 | ストリームが強制されるかどうかを指定します。 |
ユースケース 1:トランスコーディングとパッケージング
{
"Inputs": [
{
"Name": "video",
"InputFile": {
"Type": "OSS",
"Media": "https://<your-bucket>.<public-endpoint>/<video_1_chinese.mp4>"
}
},
{
"Name": "EnglishAudio",
"InputFile": {
"Type": "OSS",
"Media": "https://<your-bucket>.<public-endpoint>/<video_1_english.mp4>"
}
},
{
"Name": "JapaneseAudio",
"InputFile": {
"Type": "OSS",
"Media": "https://<your-bucket>.<public-endpoint>/<video_1_japanese.mp4>"
}
}
],
"OutputGroups": [
{
"GroupConfig": {
"Type": "Hls",
"OutputFileBase": {
"Type": "OSS",
"Media": "https://<your-bucket>.<public-endpoint>/<URI>/"
},
"ManifestName": "<m3u8_filename>"
},
"Outputs": [
{
"Name": "360P",
"InputRef": "video",
"OutputFileName": "video/360p/360p",
"TemplateId": "Video-360P"
},
{
"Name": "540P",
"InputRef": "video",
"OutputFileName": "video/540p/540p",
"TemplateId": "Video-540P"
},
{
"Name": "720P",
"InputRef": "video",
"OutputFileName": "video/720p/720p",
"TemplateId": "Video-720P"
},
{
"Name": "1080P",
"InputRef": "video",
"OutputFileName": "video/1080p/1080p",
"TemplateId": "Video-1080P"
},
{
"OutputFileName": "audio/chinese/chinese",
"TemplateId": "Audio-64Kbps",
"HlsGroupConfig": {
"Name": "Chinese",
"Type":"audio",
"Language": "zh",
"Autoselect": true,
"Default": true
}
},
{
"InputRef": "EnglishAudio",
"OutputFileName": "audio/english/english",
"TemplateId": "Audio-64Kbps",
"HlsGroupConfig": {
"Name": "English",
"Type":"audio",
"Language": "en",
"Autoselect": true
}
},
{
"InputRef": "JapaneseAudio",
"OutputFileName": "audio/japanese/japanese",
"TemplateId": "Audio-64Kbps",
"HlsGroupConfig": {
"Name": "Japanese",
"Type":"audio",
"Language": "ja",
"Autoselect": true
}
}
]
}
]
}ユースケース 2:オーディオトラックの追加
手順:
"ExtraAudio" という名前の入力を指定します。出力では、この入力を参照してオーディオ HLS ストリームにトランスコーディングします。
GroupConfig の ManifestExtend オプションで InputRef を設定し、入力から "RefManifest" ファイルを参照して元のマニフェストを再利用し、追加のオーディオトラックを付加します。
{
"Inputs": [
{
"Name": "ExtraAudio",
"InputFile": {
"Type": "OSS",
"Media": "http://your-bucket.oss-region.aliyuncs.com/in/extra-audio.mp4"
}
},
{
"Name": "RefManifest",
"InputFile": {
"Type": "OSS",
"Media": "http://your-bucket.oss-region.aliyuncs.com/in/manifest.m3u8"
}
}
],
"OutputGroups": [
{
"GroupConfig": {
"Type": "Hls",
"OutputFileBase": {
"Type": "OSS",
"Media": "http://your-bucket.oss-region.aliyuncs.com/out/demo"
},
"ManifestName": "manifest",
"ManifestExtend": {
"InputRef": "RefManifest"
}
},
"Outputs": [
{
"Name": "ExtraAudioOut",
"InputRef": "ExtraAudio",
"OutputFileName": "extra-audio",
"TemplateId": "#YourAudioTemplateId",
"HlsGroupConfig": {
"Type": "audio",
"Name":"Chinese",
"Language": "zh-cn"
}
}
]
}
]
}ユースケース 3:オーディオトラックの置換
このユースケースは ユースケース 2 に基づいています。ManifestExtend 内の Excludes オプションを使用して、元のマニフェストから特定のストリームを除外します。
パラメーター | タイプ | 説明 |
Name | 文字列 | 除外するストリームの |
Type | 文字列 | 除外するストリームの 有効な値:
|
Language | 文字列 | 除外するストリームの |
{
"Inputs": [
{
"Name": "ExtraAudio",
"InputFile": {
"Type": "OSS",
"Media": "http://your-bucket.oss-region.aliyuncs.com/in/extra-audio.mp4"
}
},
{
"Name": "RefManifest",
"InputFile": {
"Type": "OSS",
"Media": "http://your-bucket.oss-region.aliyuncs.com/in/manifest.m3u8"
}
}
],
"OutputGroups": [
{
"GroupConfig": {
"Type": "Hls",
"OutputFileBase": {
"Type": "OSS",
"Media": "http://your-bucket.oss-region.aliyuncs.com/out/demo"
},
"ManifestName": "manifest",
"ManifestExtend": {
"InputRef": "RefManifest",
"Excludes": [{
"Language": "en",
"Type": "Audio"
}]
}
},
"Outputs": [
{
"Name": "ExtraAudioOut",
"InputRef": "ExtraAudio",
"OutputFileName": "extra-audio",
"TemplateId": "#YourAudioTemplateId",
"HlsGroupConfig": {
"Type": "audio",
"Name":"Chinese",
"Language": "zh-cn"
}
}
]
}
]
}タスク結果の照会
GetMediaConvertJob API を呼び出して、トランスコーディングタスクの詳細を照会します。
コールバック通知
イベントタイプ: MediaConvertComplete
このイベントはコンソールで設定できません。代わりに SetEventCallback API を呼び出してください。
主要なコールバックパラメーター
パラメーター | タイプ | 必須 | 説明 | |
Name | 文字列 | はい | メインタスクの名前。 | |
JobId | 文字列 | はい | タスク ID。 | |
Status | 文字列 | はい | タスクのステータス。 | |
TriggerSource | 文字列 | いいえ | タスクをトリガーしたソース。 | |
FinishTime | 文字列 | いいえ | タスクが完了した時刻。形式は | |
UserData | 文字列 | いいえ | タスクの送信時に指定したカスタム文字列。この値はそのまま渡され、コールバックで返されます。 | |
例
{
"FinishTime": "2025-05-09T08:03:21Z",
"JobId": "your-job-id",
"Status": "Success",
"TriggerSource": "IceWorkflow",
"UserData": "{\"ImsSrc\":\"Workflow\",\"TaskId\":\"e89a955d88ca47f0b9b79c562e5c622f\"}"
}パッケージング済みマルチビットレートビデオの再生
ApsaraVideo Player を使用して、パッケージングされたマルチビットレートビデオを再生します。
動画翻訳とマルチビットレートパッケージングのワークフロー
入力の準備:ソースファイルを用意します。
翻訳:ソースファイルを英語や日本語などの目的の言語に翻訳し、対応するオーディオまたはビデオファイルを生成します。
トランスコーディングとパッケージング:
SubmitMediaConvertJobAPI を呼び出して、多言語コンテンツをマージし、標準化されたマルチビットレートビデオにトランスコーディングします。