Dokumen ini menjelaskan cara menggunakan Intelligent Media Services (IMS) untuk melakukan transkoding dan pengemasan file media dengan beberapa track audio, sehingga Anda dapat menghasilkan konten audio dan video multi-bahasa yang kompatibel dengan berbagai perangkat dan pemutar.
Alur kerja transkoding dan pengemasan
Contoh struktur file yang telah dikemas:
#EXTM3U
# Definisi aliran audio (multi-bahasa)
#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"
# 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.m3u8Prasyarat
Pastikan Intelligent Media Services (IMS) telah diaktifkan. Untuk petunjuknya, lihat Aktifkan IMS.
Konfigurasi
Konfigurasi dasar IMS
Storage: Bind bucket Object Storage Service (OSS) ke IMS. Untuk informasi selengkapnya, lihat Konfigurasikan lokasi penyimpanan.
Callback: Konfigurasikan callback HTTP atau MNS untuk menerima notifikasi status task. Untuk informasi lebih lanjut tentang metode dan event callback, lihat Ikhtisar event callback.
Konfigurasi template transkoding
Prosedur konfigurasi
Contoh persyaratan
Codec: H.264/H.265
Resolusi video: 360p/540p/720p/1080p
Audio: HE-AAC pada 64 kbps (konfigurasi default).
Contoh konfigurasi
Buat template transkoding untuk setiap resolusi video yang diperlukan berdasarkan contoh pada tabel berikut. Untuk petunjuk cara membuat template, lihat Buat template transkoding.
Untuk melakukan transkoding Narrowband HD™, buat template yang sesuai berdasarkan tabel tersebut, lalu submit a ticket agar Alibaba Cloud dapat meningkatkan konfigurasi backend Anda.
H.264
Template transkoding | Codec | Format kontainer | Pengaturan 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 Template ini tidak dapat dibuat di Konsol. Gunakan API atau submit a ticket sebagai gantinya. |
H.265
Disarankan: Gunakan format kontainer fmp4. Format ini merupakan standar untuk perangkat Apple dan kompatibel dengan Safari.
Alternatif: Format kontainer .ts juga dapat digunakan, tetapi tidak kompatibel dengan Safari.
Batasan Konsol: Anda tidak dapat membuat aliran dengan format kontainer fmp4 di Konsol. Sebagai gantinya, buat aliran dengan format kontainer m3u8(ts). Alibaba Cloud kemudian akan meningkatkan konfigurasi di backend.
Template transkoding | Codec | Format kontainer | Pengaturan 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 Template ini tidak dapat dibuat di Konsol. Gunakan API atau submit a ticket sebagai gantinya. |
Tugas transkoding dan pengemasan multi-bitrate
Pengiriman tugas multi-bitrate
Panggil operasi SubmitMediaConvertJob untuk mengirimkan tugas transkoding file video atau audio Anda ke IMS.
Parameter HlsGroupConfig
Parameter | Tipe | Deskripsi |
Type | string | Jenis aliran data. Nilai yang valid:
|
Bandwidth | string | Bandwidth. Parameter ini opsional. Secara default, bitrate (dalam bps) digunakan. Hanya berlaku ketika |
AudioGroup | string | Kelompok audio yang dirujuk oleh aliran video. Hanya berlaku ketika |
SubtitleGroup | string | Kelompok subtitle yang dirujuk oleh aliran video. Hanya berlaku ketika |
Name | string | Atribut NAME dari aliran output dalam manifes HLS. Parameter ini wajib ketika |
Group | string | Atribut GROUP_ID dari aliran output dalam manifes HLS. Parameter ini hanya berlaku ketika Default-nya adalah nilai parameter |
Language | string | Atribut LANGUAGE dari aliran output dalam manifes HLS. Parameter ini hanya berlaku ketika |
Default | boolean | Menentukan apakah ini adalah aliran default. Hanya berlaku ketika |
AutoSelect | boolean | Menentukan apakah aliran harus dipilih secara otomatis. Hanya berlaku ketika |
Forced | boolean | Menentukan apakah aliran bersifat forced. Hanya berlaku ketika |
Kasus penggunaan 1: Transkode dan kemas
{
"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"
}
}
]
}
]
}Kasus penggunaan 2: Tambahkan track audio
Prosedur:
Tentukan input bernama "ExtraAudio". Di output, rujuk input ini untuk mentranskode menjadi aliran HLS audio.
Atur InputRef dalam opsi ManifestExtend GroupConfig untuk merujuk file "RefManifest" dari input, sehingga memanfaatkan manifes asli untuk menambahkan track audio tambahan.
{
"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"
}
}
]
}
]
}Kasus penggunaan 3: Ganti track audio
Kasus penggunaan ini mengembangkan Kasus penggunaan 2. Gunakan opsi Excludes dalam ManifestExtend untuk mengecualikan aliran tertentu dari manifes asli.
Parameter | Tipe | Deskripsi |
Name | string | Atribut |
Type | string | Atribut Nilai yang valid:
|
Language | string | Atribut |
{
"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"
}
}
]
}
]
}Meminta hasil tugas
Panggil operasi GetMediaConvertJob untuk mendapatkan detail tugas transkoding.
Notifikasi callback
Tipe event: MediaConvertComplete
Metode konfigurasi: Event ini tidak dapat dikonfigurasi di Konsol. Sebagai gantinya, panggil operasi SetEventCallback untuk mengaturnya.
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. Formatnya harus sesuai dengan | |
UserData | string | Tidak | String kustom yang Anda tentukan saat mengirimkan 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 yang telah dikemas
Gunakan ApsaraVideo Player untuk memutar video multi-bitrate yang telah dikemas.
Alur kerja translasi video dan pengemasan multi-bitrate
Siapkan input: Sediakan file sumber.
Terjemahkan: Terjemahkan file sumber ke bahasa target, seperti Inggris dan Jepang, untuk menghasilkan file audio atau video yang sesuai.
Transkode dan kemas: Panggil operasi
SubmitMediaConvertJobuntuk menggabungkan konten multi-bahasa dan mentranskode menjadi video multi-bitrate yang distandarisasi.