All Products
Search
Document Center

Intelligent Media Services:Praktik terbaik untuk transkoding dan pengemasan multi-subtitle

Last Updated:Aug 26, 2026

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:

  1. Persiapkan lingkungan: aktifkan IMS, bind Bucket OSS, konfigurasikan callback, dan unggah file sumber. Lihat Prasyarat dan Persiapan.

  2. Buat templat transkoding untuk aliran video dan audio. Lihat Konfigurasi templat transkoding.

  3. Kirim pekerjaan transkoding dan pengemasan multi-bitrate. Lihat Kirim pekerjaan multi-bitrate.

  4. 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 Success menunjukkan bahwa pekerjaan berhasil. Jika salah satu subtask berhasil, hasil keseluruhan dianggap berhasil.

TriggerSource

String

Tidak

Sumber pemicu. Nilai API menunjukkan bahwa pekerjaan dikirim melalui API.

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.