このドキュメントでは、Intelligent Media Services (IMS) を使用して複数の音声トラックを含むメディアファイルをトランスコードおよびパッケージングし、さまざまなデバイスやプレーヤーと互換性のある多言語対応の音声・映像コンテンツを生成する方法について説明します。
トランスコードおよびパッケージングのワークフロー
パッケージ化されたファイル構造の例:
#EXTM3U
# 音声ストリーム定義(多言語)
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="中文",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(デフォルト構成)
構成例
以下の表の例に基づき、必要な映像解像度ごとにトランスコーディングテンプレートを作成します。テンプレートの作成方法については、「トランスコーディングテンプレートの作成」をご参照ください。
狭帯域 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 操作を呼び出して、ご利用の映像または音声ファイルのトランスコードタスクを IMS に送信します。
HlsGroupConfig パラメーター
パラメーター | タイプ | 説明 |
Type | string | データストリームのタイプ。 有効値:
|
Bandwidth | string | 帯域幅。このパラメーターは任意です。デフォルトではビットレート(bps 単位)が使用されます。
|
AudioGroup | string | ビデオストリームが参照する音声グループ。 |
SubtitleGroup | string | ビデオストリームが参照する字幕グループ。 |
Name | string | HLS マニフェスト内の出力ストリームの NAME 属性。 |
Group | string | HLS マニフェスト内の出力ストリームの GROUP_ID 属性。 デフォルトでは |
Language | string | HLS マニフェスト内の出力ストリームの LANGUAGE 属性。 |
Default | boolean | これがデフォルトストリームかどうかを指定します。 |
AutoSelect | boolean | ストリームを自動的に選択するかどうかを指定します。 |
Forced | boolean | ストリームが強制的かどうかを指定します。 |
ユースケース 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 | string | 除外するストリームの |
Type | string | 除外するストリームの 有効値:
|
Language | string | 除外するストリームの |
{
"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 操作を呼び出して、トランスコードタスクの詳細を取得します。
コールバック通知
イベントタイプ:MediaConvertComplete
構成方法:このイベントはコンソールで構成できません。SetEventCallback 操作を呼び出して設定してください。
主要なコールバックパラメーター
パラメーター | タイプ | 必須 | 説明 | |
Name | String | はい | メインタスクの名前。 | |
JobId | String | はい | タスク ID。 | |
Status | String | はい | タスクステータス。 | |
TriggerSource | String | いいえ | タスクをトリガーしたソース。 | |
FinishTime | String | いいえ | タスクが完了した時刻。形式は | |
UserData | string | いいえ | タスク送信時に指定したカスタム文字列。この文字列はそのまま渡され、コールバックで返されます。 | |
例
{
"FinishTime": "2025-05-09T08:03:21Z",
"JobId": "your-job-id",
"Status": "Success",
"TriggerSource": "IceWorkflow",
"UserData": "{\"ImsSrc\":\"Workflow\",\"TaskId\":\"e89a955d88ca47f0b9b79c562e5c622f\"}"
}マルチビットレートパッケージ化映像の再生
ApsaraVideo Player を使用して、パッケージ化されたマルチビットレート映像を再生します。
映像翻訳およびマルチビットレートパッケージングのワークフロー
入力の準備:ソースファイルを提供します。
翻訳:ソースファイルを英語や日本語などの対象言語に翻訳し、対応する音声または映像ファイルを生成します。
トランスコードおよびパッケージング:
SubmitMediaConvertJob操作を呼び出して、多言語コンテンツをマージし、標準化されたマルチビットレート映像にトランスコードします。