Panduan ini menjelaskan cara menggunakan Intelligent Media Services (IMS) untuk transkoding dan pengemasan multi-track audio. Dengan mengikuti langkah-langkah berikut, Anda dapat menghasilkan konten media multibahasa yang kompatibel dengan berbagai perangkat.
Alur Kerja
Contoh struktur file keluaran:
#EXTM3U
# Definisi aliran audio (multibahasa)
#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"
# Definisi aliran video (multi-bitrate)
#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.m3u8Sebelum memulai
Aktifkan IMS untuk menggunakan fitur-fiturnya.
Konfigurasi
Konfigurasi dasar
Penyimpanan: Asosiasikan bucket Object Storage Service (OSS) dengan IMS. Untuk informasi selengkapnya, lihat Konfigurasi alamat penyimpanan.
Callback: Konfigurasikan callback HTTP atau MNS untuk menerima notifikasi status tugas. Untuk metode callback dan event-nya, lihat Ikhtisar.
Konfigurasi template transkoding
Prosedur
Persyaratan contoh
Codec: H.264, H.265
Resolusi: 360P, 540P, 720P, 1080P
Audio: HE-AAC, 64 Kbps (default)
Konfigurasi contoh
Contoh ini menunjukkan cara mengonfigurasi template transkoding untuk empat resolusi video yang diperlukan. Untuk mempelajari cara membuat templat, lihat Buat template transkoding.
Untuk melakukan transkoding Narrowband HD™, buat template dasar berdasarkan tabel berikut. Kemudian, kirim tiket untuk peningkatan backend.
H.264
Template | Codec | Format kontainer | Parameter lainnya |
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) |
Catatan Anda tidak dapat membuat template ini di konsol. Gunakan API atau kirim tiket untuk bantuan. |
H.265
Direkomendasikan: format kontainer fMP4. Ini adalah standar Apple dan kompatibel dengan Safari.
Alternatif: Format kontainer TS memungkinkan tetapi tidak kompatibel dengan Safari.
Batasan konsol: Anda tidak dapat membuat template dengan format kontainer fMP4 di konsol. Buat terlebih dahulu template dengan format kontainer m3u8 (.ts), lalu hubungi Alibaba Cloud untuk meningkatkan konfigurasi di backend.
Template | Codec | Format kontainer | Parameter lainnya |
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) |
Catatan Anda tidak dapat membuat template ini di konsol. Gunakan API atau kirim tiket untuk bantuan. |
Kirim tugas transkoding
Mulai tugas multi-bitrate
Panggil operasi SubmitMediaConvertJob untuk mengirim tugas transkoding.
Parameter Config (HlsGroupConfig)
Parameter | Tipe | Deskripsi |
Type | string | Menentukan jenis aliran. Nilai yang valid:
|
Bandwidth | string | Bandwidth. Parameter ini opsional. Parameter ini berlaku ketika Type diatur ke video atau hybrid. |
AudioGroup | string | Kelompok audio yang dirujuk oleh aliran video. Parameter ini berlaku ketika Type diatur ke video. |
SubtitleGroup | string | Kelompok subtitle yang dirujuk oleh aliran video. Parameter ini berlaku ketika Type diatur ke video atau hybrid. |
Name | string | Atribut NAME dari aliran keluaran dalam manifes HLS. Parameter ini wajib ketika Type diatur ke audio atau subtitle. |
Group | string | Atribut GROUP_ID dari aliran keluaran dalam manifes HLS. Parameter ini berlaku ketika Type diatur ke audio atau subtitle. Secara default, nilainya sama dengan Type. |
Language | string | Atribut LANGUAGE dari aliran keluaran dalam manifes HLS. Parameter ini berlaku ketika Type diatur ke audio atau subtitle. Nilainya harus sesuai dengan RFC 5646. |
Default | boolean | Menentukan apakah aliran ditetapkan sebagai aliran default. Parameter ini berlaku ketika Type diatur ke audio. |
AutoSelect | boolean | Menentukan apakah aliran dipilih secara otomatis. Parameter ini berlaku ketika Type diatur ke audio. |
Forced | boolean | Menentukan apakah aliran ditampilkan secara paksa. Parameter ini berlaku ketika Type diatur ke audio. |
Skenario 1: Transkode dan hasilkan paket multi-bitrate
{
"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"
}
}
]
}
]
}Skenario 2: Tambahkan track audio ke manifes HLS yang sudah ada
Langkah-langkah:
Tentukan input bernama
ExtraAudio. Di output, rujuk input ini untuk mentranskode menjadi aliran HLS audio.Atur
InputRefdi opsiManifestExtenddalamGroupConfiguntuk merujuk fileRefManifestdari input. Hal ini menggunakan kembali manifes tersebut, sehingga Anda dapat menambahkan track audio tambahan berdasarkan manifes aslinya.
{
"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"
}
}
]
}
]
}Skenario 3: Ganti track audio dalam manifes HLS yang sudah ada
Ini merupakan pengembangan dari Skenario 2. Tambahkan opsi Excludes di ManifestExtend untuk mengecualikan aliran tertentu dari manifes asli.
Parameter | Tipe | Deskripsi |
Name | string | Name aliran yang akan dikecualikan. |
Type | string | Type aliran yang akan dikecualikan. Nilai yang valid:
|
Language | string | Language aliran yang akan dikecualikan. Nilainya harus sesuai dengan 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"
}
}
]
}
]
}Kueri hasil tugas
Panggil operasi GetMediaConvertJob untuk mendapatkan detail tugas transkoding.
Event callback
Jenis event: MediaConvertComplete
Metode konfigurasi: Event ini tidak dapat dikonfigurasi di konsol. Konfigurasikan dengan memanggil SetEventCallback.
Parameter callback utama
Parameter | Tipe | Wajib | Deskripsi | |
Name | String | Ya | Nama tugas utama. | |
JobId | String | Ya | ID tugas. | |
Status | String | Ya | Status tugas. | |
TriggerSource | String | Tidak | Sumber yang memicu tugas. | |
FinishTime | String | Tidak | Waktu penyelesaian tugas, dalam format UTC. | |
UserData | string | Tidak | String kustom yang ditentukan saat mengirim tugas. String ini diteruskan dan dikembalikan dalam callback. | |
Contoh
{
"FinishTime": "2025-05-09T08:03:21Z",
"JobId": "your-job-id",
"Status": "Success",
"TriggerSource": "IceWorkflow",
"UserData": "{\"ImsSrc\":\"Workflow\",\"TaskId\":\"e89a955d88ca47f0b9b79c562e5c622f\"}"
}Memutar video multi-bitrate
Gunakan ApsaraVideo Player untuk memutar video yang telah dikemas.
Penerjemahan video + Pengemasan multi-bitrate
Persiapkan file sumber.
Terjemahkan file sumber ke bahasa target (seperti Inggris dan Jepang) untuk menghasilkan file audio atau video yang sesuai.
Panggil operasi
SubmitMediaConvertJobuntuk mentranskode dan mengemas konten multibahasa menjadi video multi-bitrate yang distandardisasi.