Gunakan Alibaba Cloud Intelligent Media Services (IMS) untuk mentranskode dan mengemas file audio serta video dengan beberapa subtitle, serta menghasilkan media multi-subtitle yang dapat diputar di berbagai jenis perangkat.
Alur kerja transkoding dan pengemasan
Untuk menghasilkan media multi-subtitle dengan IMS, Anda perlu menyelesaikan langkah-langkah berikut:
Persiapkan lingkungan: aktifkan IMS, bind Bucket OSS, konfigurasikan callback, dan unggah file sumber. Lihat Prasyarat dan Persiapan.
Buat templat transkoding untuk aliran video dan audio. Lihat Konfigurasi templat transkoding.
Kirim pekerjaan transkoding dan pengemasan multi-bitrate. Lihat Kirim pekerjaan multi-bitrate.
Kueri hasil pekerjaan dan verifikasi output yang dikemas. Lihat Kueri hasil pekerjaan dan Verifikasi output yang dikemas.
Bagan alir berikut menunjukkan alur kerja transkoding dan pengemasan.
Contoh struktur file yang dikemas
Contoh berikut menunjukkan struktur playlist dari output yang dikemas:
#EXTM3U
# Definisi aliran audio (multi-bahasa)
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="Chinese-Audio",DEFAULT=YES,AUTOSELECT=YES,FORCED=NO,LANGUAGE="zh",URI="audio/chinese/chinese.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="English-Audio",DEFAULT=NO,AUTOSELECT=YES,FORCED=NO,LANGUAGE="en",URI="audio/english/english.m3u8"
# Definisi aliran video (multi-bitrate)
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=900000,CODECS="avc1.640020",RESOLUTION=720x1280,AUDIO="audio",SUBTITLES="subtitle"
video/720p/720p.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=400000,CODECS="avc1.640020",RESOLUTION=360x640,AUDIO="audio",SUBTITLES="subtitle"
video/360p/360p.m3u8
# Definisi aliran subtitle (multi-bahasa)
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subtitle",NAME="Chinese-Subtitle",DEFAULT=YES,AUTOSELECT=YES,FORCED=NO,LANGUAGE="zh",URI="subtitle/chinese/chinese.m3u8"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subtitle",NAME="English-Subtitle",DEFAULT=NO,AUTOSELECT=YES,FORCED=NO,LANGUAGE="en",URI="subtitle/english/english.m3u8"Prasyarat
Intelligent Media Services telah diaktifkan. Untuk informasi lebih lanjut, lihat Aktifkan IMS.
Persiapan
Konfigurasi dasar IMS
Konfigurasi penyimpanan — Bind Bucket OSS ke IMS. Untuk informasi lebih lanjut, lihat Konfigurasi alamat penyimpanan.
Konfigurasi callback — Konfigurasikan callback HTTP atau callback MNS untuk menerima Notifikasi status pekerjaan. Untuk informasi dasar tentang metode callback dan event callback, lihat Ikhtisar event callback.
File sumber — Unggah file video, audio, dan subtitle sumber ke Bucket OSS yang telah di-bind ke IMS. Contoh pekerjaan dalam topik ini mereferensikan file-file tersebut melalui URL OSS-nya.
Konfigurasi templat transkoding
Alur kerja konfigurasi
Bagan alir berikut menunjukkan alur kerja konfigurasi templat transkoding.
Kebutuhan contoh
Contoh ini menggunakan persyaratan berikut:
Protokol encoding — H264 atau H265
Resolusi video — 360P, 540P, 720P, atau 1080P
Audio — HE-AAC pada 64 Kbps. Parameter audio lainnya menggunakan nilai default.
Subtitle — M3U8 (VTT)
Contoh konfigurasi
Contoh ini menggunakan empat tingkat kualitas video. Buat templat transkoding video seperti yang dijelaskan dalam tabel berikut. Untuk informasi lebih lanjut, lihat Buat templat transkoding.
Contoh pekerjaan dalam topik ini juga mereferensikan templat transkoding audio bernama Audio-64Kbps untuk output audio HE-AAC. Pastikan templat ini telah dibuat sebelum Anda mengirim pekerjaan pengemasan.
Untuk menggunakan transkoding Narrowband HD, buat templat yang sesuai seperti yang dijelaskan dalam tabel, lalu submit a ticket. Alibaba Cloud kemudian akan melakukan peningkatan konfigurasi di Backend.
Tabel berikut menjelaskan templat untuk protokol encoding H264 dan H265. Jika Anda menggunakan H265, pertimbangkan hal-hal berikut terkait format kontainer:
Opsi utama — Gunakan format kontainer fmp4. Ini adalah protokol standar Apple dan bekerja dengan baik pada browser Safari.
Alternatif — Format kontainer ts juga berfungsi, tetapi tidak kompatibel dengan Safari.
Batasan Konsol — Anda tidak dapat membuat format kontainer fmp4 di Konsol. Buat templat terlebih dahulu dengan format kontainer m3u8(ts). Alibaba Cloud kemudian akan melakukan peningkatan konfigurasi di Backend.
H264
Templat transkoding | Protokol encoding | Format kontainer | Pengaturan lainnya |
Video-360P | H264 | m3u8(.ts) | Resolusi: 640 piksel pada sisi panjang (sisi pendek adaptif). Durasi segmen: 5 detik. Konfigurasikan pengaturan lain sesuai kebutuhan. |
Video-540P | H264 | m3u8(.ts) | Resolusi: 960 piksel pada sisi panjang (sisi pendek adaptif). Durasi segmen: 5 detik. Konfigurasikan pengaturan lain sesuai kebutuhan. |
Video-720P | H264 | m3u8(.ts) | Resolusi: 1280 piksel pada sisi panjang (sisi pendek adaptif). Durasi segmen: 5 detik. Konfigurasikan pengaturan lain sesuai kebutuhan. |
Video-1080P | H264 | m3u8(.ts) | Resolusi: 1920 piksel pada sisi panjang (sisi pendek adaptif). Durasi segmen: 5 detik. Konfigurasikan pengaturan lain sesuai kebutuhan. |
H265
Templat transkoding | Protokol encoding | Format kontainer | Pengaturan lainnya |
Video-360P | H265 | m3u8(.fmp4) | Resolusi: 640 piksel pada sisi panjang (sisi pendek adaptif). Durasi segmen: 5 detik. Konfigurasikan pengaturan lain sesuai kebutuhan. |
Video-540P | H265 | m3u8(.fmp4) | Resolusi: 960 piksel pada sisi panjang (sisi pendek adaptif). Durasi segmen: 5 detik. Konfigurasikan pengaturan lain sesuai kebutuhan. |
Video-720P | H265 | m3u8(.fmp4) | Resolusi: 1280 piksel pada sisi panjang (sisi pendek adaptif). Durasi segmen: 5 detik. Konfigurasikan pengaturan lain sesuai kebutuhan. |
Video-1080P | H265 | m3u8(.fmp4) | Resolusi: 1920 piksel pada sisi panjang (sisi pendek adaptif). Durasi segmen: 5 detik. Konfigurasikan pengaturan lain sesuai kebutuhan. |
Pekerjaan transkoding dan pengemasan multi-bitrate
Setelah menyelesaikan persiapan, kirim pekerjaan transkoding dan pengemasan multi-bitrate, lalu kueri hasil pekerjaan tersebut.
Kirim pekerjaan multi-bitrate
Panggil operasi SubmitMediaConvertJob untuk mengirim pekerjaan transkoding file video atau audio ke Intelligent Media Services.
Gunakan OverrideParams untuk mengatur aliran subtitle
Anda tidak dapat menyesuaikan informasi subtitle dalam templat transkoding. Untuk mengonfigurasi aliran subtitle, atur secara eksplisit informasi subtitle dengan OverrideParams saat mengirim pekerjaan. Tabel berikut menjelaskan pengaturan aliran subtitle.
Subtitle
Parameter | Tipe | Deskripsi |
Subtitles | Array of Subtitle | Pengaturan aliran subtitle. |
Subtitle
Parameter | Tipe | Deskripsi |
Codec | String | Format encoding dari aliran subtitle. HLS hanya mendukung format vtt. |
Deskripsi konfigurasi (HlsGroupConfig)
Setiap output dalam contoh pekerjaan berisi objek HlsGroupConfig yang menjelaskan aliran output dalam manifes HLS. Tabel berikut menjelaskan parameter-parameternya.
Parameter | Tipe | Deskripsi |
Type | string | Menentukan tipe aliran data. Nilai yang valid: Video, Audio, Subtitle, dan Hybrid. Selama pemrosesan, hanya pengaturan yang sesuai dengan tipe aliran yang dipertahankan: pengaturan terkait video untuk Video, pengaturan terkait audio untuk Audio, dan kedua pengaturan tersebut untuk Hybrid. |
Bandwidth | string | Bandwidth. Parameter ini opsional. Secara default digunakan bitrate (bps). Parameter ini berlaku ketika Type adalah Video atau Hybrid. |
AudioGroup | string | Kelompok audio yang direferensikan oleh aliran video ini. Parameter ini berlaku ketika Type adalah Video. |
SubtitleGroup | string | Kelompok subtitle yang direferensikan oleh aliran video ini. Parameter ini berlaku ketika Type adalah Video atau Hybrid. |
Name | string | Atribut NAME dari aliran output ini dalam manifes HLS. Parameter ini wajib diisi ketika Type adalah Audio atau Subtitle. |
Group | string | Atribut GROUP_ID dari aliran output ini dalam manifes HLS. Parameter ini berlaku ketika Type adalah Audio atau Subtitle. Nilai default: sama dengan nilai Type. |
Language | string | Atribut LANGUAGE dari aliran output ini dalam manifes HLS. Parameter ini berlaku ketika Type adalah Audio atau Subtitle. Nilainya harus sesuai dengan standar RFC 5646. |
Default | boolean | Menentukan apakah aliran ini diatur sebagai aliran default. Parameter ini berlaku ketika Type adalah Audio atau Subtitle. |
AutoSelect | boolean | Menentukan apakah aliran ini dipilih secara otomatis. Parameter ini berlaku ketika Type adalah Audio atau Subtitle. |
Forced | boolean | Menentukan apakah aliran ini dipaksa ditampilkan. Parameter ini berlaku ketika Type adalah Audio atau Subtitle. |
Contoh: transkode dan hasilkan file terkemas multi-bitrate
Contoh berikut mendefinisikan empat input: sebuah video (video), track audio Inggris (EnglishAudio), track subtitle Tiongkok (ChineseSubtitle), dan track subtitle Inggris (EnglishSubtitle). Output mencakup dua tingkat kualitas video (720P dan 360P), dua track audio, dan dua track subtitle. Contoh ini menggunakan dua dari empat templat video yang telah Anda buat. Anda dapat menambah atau menghapus output video sesuai kebutuhan.
Setiap output, termasuk setiap output subtitle, memerlukan TemplateId. Untuk output subtitle, tentukan ID templat transkoding apa pun dalam pekerjaan pengemasan. Pada contoh berikut, ganti <TemplateId> dengan ID templat yang ada, misalnya Video-360P.
JSON berikut sesuai dengan parameter Config dari permintaan SubmitMediaConvertJob. Ganti placeholder dalam tanda kurung sudut dengan nilai aktual Anda.
{
"Config": {
"Inputs": [
{
"Name": "video",
"InputFile": {
"Type": "OSS",
"Url": "https://<Bucket>.<OSSPublicEndpoint>/<Video1Chinese>"
}
},
{
"Name": "EnglishAudio",
"InputFile": {
"Type": "OSS",
"Url": "https://<Bucket>.<OSSPublicEndpoint>/<Audio1English>"
}
},
{
"Name": "ChineseSubtitle",
"InputFile": {
"Type": "OSS",
"Url": "https://<Bucket>.<OSSPublicEndpoint>/<Subtitle1Chinese>"
}
},
{
"Name": "EnglishSubtitle",
"InputFile": {
"Type": "OSS",
"Url": "https://<Bucket>.<OSSPublicEndpoint>/<Subtitle1English>"
}
}
],
"OutputGroups": [
{
"Name": "Hls",
"GroupConfig": {
"Type": "Hls",
"OutputFileBase": {
"Type": "OSS",
"Url": "https://<Bucket>.<PublicEndpoint>/<URI>/"
},
"ManifestName": "<m3u8filename>"
},
"Outputs": [
{
"Name": "720P",
"OutputFileName": "video/720p/720p",
"TemplateId": "Video-720P",
"HlsGroupConfig": {
"Type": "Video"
}
},
{
"Name": "360P",
"OutputFileName": "video/360p/360p",
"TemplateId": "Video-360P",
"HlsGroupConfig": {
"Type": "Video"
}
},
{
"OutputFileName": "audio/chinese/chinese",
"TemplateId": "Audio-64Kbps",
"HlsGroupConfig": {
"Type": "Audio",
"Name": "ChineseAudio",
"Language": "zh",
"Autoselect": "TRUE",
"Default": "TRUE"
}
},
{
"InputRef": "ChineseSubtitle",
"OutputFileName": "subtitle/chinese/chinese",
"TemplateId": "<TemplateId>",
"OverrideParams": {
"Subtitles": [
{
"Codec": "vtt"
}
]
},
"HlsGroupConfig": {
"Type": "Subtitle",
"Name": "ChineseSubtitle",
"Language": "zh",
"Autoselect": "TRUE",
"Default": "TRUE"
}
},
{
"InputRef": "EnglishAudio",
"OutputFileName": "audio/english/english",
"TemplateId": "Audio-64Kbps",
"HlsGroupConfig": {
"Type": "Audio",
"Name": "EnglishAudio",
"Language": "en",
"Autoselect": "TRUE",
"Default": "FALSE"
}
},
{
"InputRef": "EnglishSubtitle",
"OutputFileName": "subtitle/english/english",
"TemplateId": "<TemplateId>",
"OverrideParams": {
"Subtitles": [
{
"Codec": "vtt"
}
]
},
"HlsGroupConfig": {
"Type": "Subtitle",
"Name": "EnglishSubtitle",
"Language": "en",
"Autoselect": "TRUE",
"Default": "FALSE"
}
}
]
}
]
}
}Kueri hasil pekerjaan
Panggil operasi GetMediaConvertJob untuk mendapatkan detail pekerjaan transkoding.
Event callback
Saat pekerjaan pengemasan selesai, IMS mengirim event callback. Tipe event (EventType) adalah MediaConvertComplete. Konsol belum mendukung pemilihan event ini. Untuk mengonfigurasinya, panggil operasi SetEventCallback.
Deskripsi bidang utama
Tabel berikut menjelaskan bidang-bidang utama dari event callback.
Parameter | Tipe | Wajib | Deskripsi |
Name | String | Ya | Nama pekerjaan utama. |
JobId | String | Ya | ID pekerjaan. |
Status | String | Ya | Status pekerjaan. Nilai |
TriggerSource | String | Tidak | Sumber pemicu. Nilai |
FinishTime | String | Tidak | Waktu saat pekerjaan selesai. Formatnya harus sama dengan EventTime. |
UserData | string | Tidak | Data kustom yang Anda kirimkan saat mengirim pekerjaan. |
Contoh berikut menunjukkan event callback:
{
"FinishTime": "2025-05-09T08:03:21Z",
"JobId": "your-job-id",
"Status": "Success",
"TriggerSource": "IceWorkflow",
"UserData": "{\"ImsSrc\":\"Workflow\",\"TaskId\":\"e89a955d88ca47f0b9b79c562e5c622f\"}"
}Verifikasi output yang dikemas
Nilai Status sebesar Success menunjukkan bahwa pekerjaan berhasil. Untuk memastikan bahwa file yang dikemas lengkap, bandingkan file output di Bucket OSS Anda dengan struktur yang ditunjukkan dalam Contoh struktur file yang dikemas. Verifikasi bahwa playlist video, audio, dan subtitle semuanya dihasilkan sesuai harapan.