Transkode file MP4 menggunakan Intelligent Media Services (IMS) untuk menyertakan beberapa track audio dan menetapkan bahasa pada setiap track.
Alur Kerja
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 selengkapnya, lihat Aktifkan layanan.
Persiapan
Konfigurasi dasar IMS
Konfigurasi penyimpanan: Bind bucket Object Storage Service (OSS) ke IMS. Untuk informasi selengkapnya, 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
Buat templat transkoding untuk empat resolusi video seperti dijelaskan di bawah ini. Untuk petunjuknya, lihat Buat templat transkoding.
Untuk menggunakan transkoding Narrowband HD™, buat templat yang sesuai berdasarkan tabel berikut. 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.
Parameter audio
Parameter | Type | Deskripsi |
InputRef | String | Nama aliran input untuk track audio ini. Nilai ini harus sesuai dengan |
LanguageControl | String | Mengontrol cara penandaan bahasa ditetapkan untuk aliran output. Nilai yang valid:
|
Language | String | Kode bahasa ISO 639-2 untuk track audio. |
Remove | String | 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 saluran 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 tunggal.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"
}
]
}
}
]
}
]
}Skema 3: Pilih audio berdasarkan bahasa
Contoh ini menggunakan parameter AudioSelector untuk memilih track audio yang ditandai jpn dari input JapaneseFile. Track audio output menetapkan LanguageControl ke InputFirst, yang mewarisi penanda 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.
Event callback
Tipe event: MediaConvertComplete
Event ini tidak dapat dikonfigurasi di Konsol. Konfigurasikan dengan memanggil operasi API SetEventCallback.
Parameter callback utama
Parameter | Tipe | 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 kustom yang ditentukan saat mengirim pekerjaan, diteruskan dan dikembalikan dalam callback. | |
Contoh
{
"FinishTime": "2025-05-09T08:03:21Z",
"JobId": "5d37357cb3a44d10ba33c52760c896cd",
"Status": "Success",
"TriggerSource": "IceWorkflow",
"UserData": "{\"ImsSrc\":\"Workflow\",\"TaskId\":\"e89a955d88ca47f0b9b79c562e5c622f\"}"
}