Topik ini menjelaskan cara menggunakan Intelligent Media Services (IMS) untuk mentranskode file MP4 agar mencakup beberapa track audio dan menetapkan bahasa untuk setiap track.
Workflow
Contoh struktur file output:
Duration: 00:00:31.40, start: 0.000000, bitrate: 816 kb/s
Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 960x540 [SAR 1:1 DAR 16:9], 663 kb/s, 25 fps, 25 tbr, 12800 tbn (default)
Stream #0:1[0x2](zho): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 46 kb/s (default)
Stream #0:2[0x3](eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 46 kb/s (default)
Stream #0:3[0x4](jpn): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 46 kb/s (default)Prasyarat
Anda telah mengaktifkan Intelligent Media Services (IMS). Untuk informasi lebih lanjut, lihat Aktifkan layanan.
Persiapan
Konfigurasi dasar IMS
Konfigurasi penyimpanan: Bind bucket Object Storage Service (OSS) ke IMS. Untuk informasi lebih lanjut, lihat Konfigurasikan alamat penyimpanan.
Konfigurasi callback: Konfigurasikan callback HTTP atau Message Notification Service (MNS) untuk menerima notifikasi status pekerjaan. Untuk informasi lebih lanjut mengenai metode dan event callback, lihat Ikhtisar event callback.
Templat transkoding
Prosedur
Contoh persyaratan
Kodek: H.264/H.265
Resolusi video: 360p/540p/720p/1080p
Audio: HE-AAC pada 64 kbps (konfigurasi default).
Contoh konfigurasi
Contoh ini menunjukkan cara membuat templat transkoding untuk empat resolusi video. Untuk petunjuknya, lihat Buat templat transkoding.
Untuk menggunakan transkoding Narrowband HD™, buat templat yang sesuai berdasarkan tabel. Kemudian, submit a ticket untuk meminta peningkatan konfigurasi backend dari Alibaba Cloud.
H.264
Templat transkoding | Kodek | Format kontainer | Parameter lainnya |
Video-360P | H.264 | mp4 |
|
Video-540P | H.264 | mp4 |
|
Video-720P | H.264 | mp4 |
|
Video-1080P | H.264 | mp4 |
|
H.265
Templat transkoding | Kodek | Format kontainer | Parameter lainnya |
Video-360P | H.265 | mp4 |
|
Video-540P | H.265 | mp4 |
|
Video-720P | H.265 | mp4 |
|
Video-1080P | H.265 | mp4 |
|
Kirim pekerjaan transkoding
Panggil operasi API SubmitMediaConvertJob untuk mengirim pekerjaan transkoding ke Intelligent Media Services.
Parameter audio
Parameter | Type | Deskripsi |
InputRef | String | Nama aliran input untuk track audio ini. Nilai ini harus sesuai dengan |
LanguageControl | String | Kebijakan untuk menetapkan tag bahasa pada aliran output. Nilai yang valid:
|
Language | String | Kode bahasa ISO 639-2 untuk track audio. |
Remove | String | Menentukan apakah aliran audio akan dihapus. |
Codec | String | Kodek audio. |
Profile | String | Profil pengkodean audio. |
Bitrate | String | Bitrate audio output. |
Samplerate | String | Laju sampel. |
Channels | String | Jumlah channel audio. |
Volume | Object | Pengaturan kontrol volume. |
Skenario 1: Pertahankan audio asli
Array
Inputsmenentukan tiga sumber: file video utama dengan audio default (video), file audio terpisah berbahasa Inggris (EnglishAudio), dan file audio terpisah berbahasa Jepang (JapaneseAudio).Dalam
OutputGroups.GroupConfig,"Type": "File"menentukan output sebagai satu file kontainer.Setiap track menggunakan
InputRefuntuk menentukan sumber input-nya danLanguageControluntuk menentukan logika penandaan bahasanya.
{
"Inputs": [
{
"Name": "video",
"InputFile": {"Type": "OSS", "Media": "https://<your-bucket>.<public-endpoint>/<video-with-default-audio.mp4>"}
},
{
"Name": "EnglishAudio",
"InputFile": {"Type": "OSS", "Media": "https://<your-bucket>.<public-endpoint>/<english-audio.mp4>"}
},
{
"Name": "JapaneseAudio",
"InputFile": {"Type": "OSS", "Media": "https://<your-bucket>.<public-endpoint>/<japanese-audio.mp4>"}
}
],
"OutputGroups": [
{
"GroupConfig": {
"Type": "File",
"OutputFileBase": {
"Type": "OSS",
"Media": "https://<your-bucket>.<public-endpoint>/<output-path>/"
}
},
"Outputs": [
{
"Name": "360P",
"OutputFileName": "video/360p/360p",
"TemplateId": "Video-360P",
"OverrideParams": {
"Audios": [
{
"InputRef": "video",
"LanguageControl": "InputFirst"
}, {
"InputRef": "EnglishAudio",
"LanguageControl": "Configured",
"Language": "eng"
}, {
"InputRef": "JapaneseAudio",
"LanguageControl": "Configured",
"Language": "jpn"
}
]
}
}
]
}
]
}Skenario 2: Hapus audio asli
Konfigurasi ini mirip dengan Skenario 1, tetapi menghilangkan referensi ke track audio video asli dari array Audios. Akibatnya, file output hanya berisi track audio berbahasa Inggris dan Jepang.
{
"Inputs": [
{
"Name": "video",
"InputFile": {"Type": "OSS", "Media": "https://<your-bucket>.<public-endpoint>/<video-with-default-audio.mp4>"}
},
{
"Name": "EnglishAudio",
"InputFile": {"Type": "OSS", "Media": "https://<your-bucket>.<public-endpoint>/<english-audio.mp4>"}
},
{
"Name": "JapaneseAudio",
"InputFile": {"Type": "OSS", "Media": "https://<your-bucket>.<public-endpoint>/<japanese-audio.mp4>"}
}
],
"OutputGroups": [
{
"GroupConfig": {
"Type": "File",
"OutputFileBase": {
"Type": "OSS",
"Media": "https://<your-bucket>.<public-endpoint>/<output-path>/"
}
},
"Outputs": [
{
"Name": "360P",
"OutputFileName": "video/360p/360p",
"TemplateId": "Video-360P",
"OverrideParams": {
"Audios": [
{
"InputRef": "EnglishAudio",
"LanguageControl": "Configured",
"Language": "eng"
}, {
"InputRef": "JapaneseAudio",
"LanguageControl": "Configured",
"Language": "jpn"
}
]
}
}
]
}
]
}Skenario 3: Pilih audio berdasarkan bahasa
Contoh ini menggunakan parameter AudioSelector untuk memilih track audio dengan tag bahasa jpn dari input JapaneseFile. Track audio output yang sesuai menetapkan LanguageControl ke InputFirst, yang secara otomatis mewarisi tag bahasa dari input.
{
"Inputs": [
{
"Name": "video",
"InputFile": {"Type": "OSS", "Media": "https://<your-bucket>.<public-endpoint>/<video-with-default-audio.mp4>"}
},
{
"Name": "EnglishAudio",
"InputFile": {"Type": "OSS", "Media": "https://<your-bucket>.<public-endpoint>/<english-audio.mp4>"}
},
{
"Name": "JapaneseFile",
"InputFile": {"Type": "OSS", "Media": "https://<your-bucket>.<public-endpoint>/<multilingual-file.mp4>"},
"AudioSelector": [{
"Name": "JapaneseAudio",
"Rule": "tag",
"TagConfig": {"language": "jpn"}
}]
}
],
"OutputGroups": [
{
"GroupConfig": {
"Type": "File",
"OutputFileBase": {
"Type": "OSS",
"Media": "https://<your-bucket>.<public-endpoint>/<output-path>/"
}
},
"Outputs": [
{
"Name": "360P",
"OutputFileName": "video/360p/360p",
"TemplateId": "Video-360P",
"OverrideParams": {
"Audios": [
{
"InputRef": "video",
"LanguageControl": "InputFirst"
}, {
"InputRef": "EnglishAudio",
"LanguageControl": "Configured",
"Language": "eng"
}, {
"InputRef": "JapaneseAudio",
"LanguageControl": "InputFirst"
}
]
}
}
]
}
]
}Kueri pekerjaan transkoding
Panggil operasi API GetMediaConvertJob untuk mengambil detail pekerjaan transkoding.
Callback event
Tipe event: MediaConvertComplete
Metode konfigurasi: Event ini tidak dapat dikonfigurasi di Konsol. Anda harus mengonfigurasinya dengan memanggil operasi API SetEventCallback.
Parameter callback utama
Parameter | Jenis | Wajib | Deskripsi | |
Name | String | Ya | Nama pekerjaan induk. | |
JobId | String | Ya | ID pekerjaan. | |
Status | String | Ya | Status pekerjaan. Nilai | |
TriggerSource | String | Tidak | Sumber pemicu. | |
FinishTime | String | Tidak | Waktu penyelesaian dalam format UTC: | |
UserData | String | Tidak | Data pengguna yang Anda tentukan saat mengirim pekerjaan. Data ini diteruskan dan dikembalikan dalam callback. | |
Contoh
{
"FinishTime": "2025-05-09T08:03:21Z",
"JobId": "5d37357cb3a44d10ba33c52760c896cd",
"Status": "Success",
"TriggerSource": "IceWorkflow",
"UserData": "{\"ImsSrc\":\"Workflow\",\"TaskId\":\"e89a955d88ca47f0b9b79c562e5c622f\"}"
}