このガイドでは、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始める前に
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 | 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 操作を呼び出して、トランスコーディングタスクを送信します。
Config パラメーター (HlsGroupConfig)
パラメーター | タイプ | 説明 |
Type | string | ストリームタイプを指定します。 有効な値:
|
Bandwidth | string | 帯域幅。このパラメーターはオプションです。 このパラメーターは、Type が video または hybrid に設定されている場合に有効です。 |
AudioGroup | string | ビデオストリームによって参照されるオーディオグループ。このパラメーターは、Type が video に設定されている場合に適用されます。 |
SubtitleGroup | string | ビデオストリームによって参照される字幕グループ。このパラメーターは、Type が video または hybrid に設定されている場合に適用されます。 |
Name | string | HLS マニフェスト内の出力ストリームの NAME 属性。このパラメーターは、Type が audio または subtitle に設定されている場合に必須です。 |
Group | string | HLS マニフェスト内の出力ストリームの GROUP_ID 属性。このパラメーターは、Type が audio または subtitle に設定されている場合に適用されます。 デフォルトでは、値は Type と同じです。 |
Language | string | HLS マニフェスト内の出力ストリームの LANGUAGE 属性。このパラメーターは、Type が audio または subtitle に設定されている場合に適用されます。値は RFC 5646 に準拠する必要があります。 |
Default | boolean | ストリームをデフォルトストリームとして設定するかどうかを指定します。このパラメーターは、Type が audio に設定されている場合に有効です。 |
AutoSelect | boolean | ストリームを自動的に選択するかどうかを指定します。このパラメーターは、Type が audio に設定されている場合に有効です。 |
Forced | boolean | ストリームを強制的に表示するかどうかを指定します。このパラメーターは、Type が audio に設定されている場合に有効です。 |
シナリオ 1: トランスコードしてマルチビットレートパッケージを生成
{
"Inputs": [
{
"Name": "video",
"InputFile": {
"Type": "OSS",
"Media": "https://<Bucket>.<Public_Endpoint>/<video_1_chinese>"
}
},
{
"Name": "EnglishAudio",
"InputFile": {
"Type": "OSS",
"Media": "https://<Bucket>.<Public_Endpoint>/<video_1_english>"
}
},
{
"Name": "JapaneseAudio",
"InputFile": {
"Type": "OSS",
"Media": "https://<Bucket>.<Public_Endpoint>/<video_1_japanese>"
}
}
],
"OutputGroups": [
{
"GroupConfig": {
"Type": "Hls",
"OutputFileBase": {
"Type": "OSS",
"Media": "https://<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: 既存の HLS マニフェストにオーディオトラックを追加
ステップ:
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": "#AudioTemplateId",
"hlsGroupConfig": {
"Type": "audio",
"Name":"Chinese",
"Language": "zh-cn"
}
}
]
}
]
}シナリオ 3: 既存の HLS マニフェストのオーディオトラックを置換
これはシナリオ 2 に基づいています。ManifestExtend に Excludes オプションを追加して、元のマニフェストから特定のストリームを除外します。
パラメーター | タイプ | 説明 |
Name | string | 除外するストリームの Name。 |
Type | string | 除外するストリームの Type。 有効な値:
|
Language | string | 除外するストリームの Language。値は RFC 5646 に準拠する必要があります。 |
{
"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": "#AudioTemplateId",
"hlsGroupConfig": {
"Type": "audio",
"Name":"Chinese",
"Language": "zh-cn"
}
}
]
}
]
}タスク結果のクエリ
GetMediaConvertJob 操作を呼び出して、トランスコーディングタスクの詳細を取得します。
コールバックイベント
イベントタイプ: MediaConvertComplete
設定方法: このイベントはコンソールでは設定できません。SetEventCallback を呼び出して設定します。
主要なコールバックパラメーター
パラメーター | タイプ | 必須 | 説明 | |
Name | String | はい | メインタスクの名前。 | |
JobId | String | はい | タスクの ID。 | |
Status | String | はい | タスクのステータス。 | |
TriggerSource | String | いいえ | タスクをトリガーしたソース。 | |
FinishTime | String | いいえ | タスクが完了した時間 (UTC 形式)。 | |
UserData | string | いいえ | タスク送信時に指定されたカスタム文字列。これはコールバックで渡され、返されます。 | |
例
{
"FinishTime": "2025-05-09T08:03:21Z",
"JobId": "your-job-id",
"Status": "Success",
"TriggerSource": "IceWorkflow",
"UserData": "{\"ImsSrc\":\"Workflow\",\"TaskId\":\"e89a955d88ca47f0b9b79c562e5c622f\"}"
}マルチビットレートビデオの再生
ApsaraVideo Player を使用して、パッケージ化されたビデオを再生します。
ビデオ翻訳 + マルチビットレートパッケージング
ソースファイルを準備します。
ソースファイルをターゲット言語 (英語や日本語など) に翻訳して、対応するオーディオまたはビデオファイルを生成します。
SubmitMediaConvertJob操作を呼び出して、多言語コンテンツを標準化されたマルチビットレートビデオにトランスコードおよびパッケージングします。