Transkode dan kemas file media dengan beberapa track audio menggunakan Intelligent Media Services (IMS) untuk 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="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.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.
Callbacks: Konfigurasikan callback HTTP atau MNS untuk menerima notifikasi status task. Untuk informasi selengkapnya, 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 tabel berikut. Untuk petunjuknya, lihat Buat template transkoding.
Untuk melakukan transkoding Narrowband HD™, buat template yang sesuai berdasarkan tabel, 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. |
Task transkoding dan pengemasan multi-bitrate
Pengiriman task multi-bitrate
Panggil operasi SubmitMediaConvertJob untuk mengirimkan task transkoding file media Anda.
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 | Grup audio yang dirujuk oleh aliran video. Hanya berlaku ketika |
SubtitleGroup | string | Grup 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 ke 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 |
Studi kasus 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"
}
}
]
}
]
}Studi kasus 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 kembali 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"
}
}
]
}
]
}Studi kasus 3: Ganti track audio
Studi kasus ini mengembangkan Studi kasus 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"
}
}
]
}
]
}Kueri hasil task
Panggil operasi GetMediaConvertJob untuk mengkueri detail task transkoding.
Notifikasi callback
Jenis event: MediaConvertComplete
Event ini tidak dapat dikonfigurasi di Konsol. Panggil operasi SetEventCallback sebagai gantinya.
Parameter callback utama
Parameter | Tipe | Wajib | Deskripsi | |
Name | String | Ya | Nama task utama. | |
JobId | String | Ya | ID task. | |
Status | String | Ya | Status task. | |
TriggerSource | String | Tidak | Sumber yang memicu task. | |
FinishTime | String | Tidak | Waktu task selesai. Formatnya harus sesuai dengan | |
UserData | string | Tidak | String kustom yang ditentukan saat Anda mengirimkan task. Nilai 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.
Translasi: 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 terstandarisasi.