全部产品
Search
文档中心

Intelligent Media Services:Transkoding dan pengemasan multi-caption

更新时间:Oct 21, 2025

Dokumen ini membimbing pengembang dalam menggunakan Alibaba Cloud Intelligent Media Services (IMS) untuk mentranskode dan mengemas konten dengan banyak caption. Ini memungkinkan Anda menghasilkan file audio dan video multi-caption secara cepat untuk diputar di berbagai perangkat.

Alur transkoding dan pengemasan

Contoh Struktur File 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

Anda telah mengaktifkan Intelligent Media Services. Untuk informasi lebih lanjut, lihat Aktifkan Layanan.

Persiapan

Konfigurasi dasar IMS

  • Konfigurasi Penyimpanan: Lampirkan Bucket OSS ke layanan IMS. Untuk informasi lebih lanjut, lihat Konfigurasikan Alamat Penyimpanan.

  • Konfigurasi Callback: Konfigurasikan callback HTTP atau MNS untuk menerima notifikasi status tugas. Untuk informasi lebih lanjut tentang metode callback dan event, lihat Ikhtisar Event Callback.

Konfigurasi template transkoding

Alur konfigurasi

Contoh persyaratan

Protokol Encoding: H264/H265

Resolusi Video: 360p/540p/720p/1080p

Audio: HE-AAC 64 Kbps (konfigurasi default)

Caption: M3U8 (VTT)

Contoh konfigurasi

Untuk contoh ini, buat template transkoding untuk empat definisi video berdasarkan tabel berikut. Untuk membuat template, lihat Buat Template Transkoding.

Catatan

Untuk melakukan transkoding Narrowband HD, buat template yang sesuai berdasarkan tabel lalu ajukan tiket. Alibaba Cloud akan melakukan konfigurasi peningkatan pada backend.

H264

Template transkoding

Protokol encoding

Format kontainer

Konfigurasi lainnya

Video-360p

H264

m3u8 (.ts)

  • Resolusi (panjang tetap, tepi pendek adaptif): 640*

  • Panjang segmen: 5 dtk

  • Konfigurasikan parameter lainnya sesuai kebutuhan.

Video-540p

H264

m3u8 (.ts)

  • Resolusi (panjang tetap, tepi pendek adaptif): 960*

  • Panjang segmen: 5 dtk

  • Konfigurasikan parameter lainnya sesuai kebutuhan.

Video-720p

H264

m3u8 (.ts)

  • Resolusi (panjang tetap, tepi pendek adaptif): 1280*

  • Panjang segmen: 5 dtk

  • Konfigurasikan parameter lainnya sesuai kebutuhan.

Video-1080p

H264

m3u8 (.ts)

  • Resolusi (panjang tetap, tepi pendek adaptif): 1920*

  • Panjang segmen: 5 dtk

  • Konfigurasikan parameter lainnya sesuai kebutuhan.

H265

Catatan
  • Opsi Utama: Gunakan format kontainer fmp4. Ini adalah protokol standar Apple dan kompatibel dengan browser Safari.

  • Alternatif: Format kontainer ts juga dapat digunakan tetapi tidak kompatibel dengan Safari.

  • Keterbatasan Konsol: Anda tidak dapat membuat format kontainer fmp4 di Konsol. Buat template dengan format kontainer m3u8 (.ts) terlebih dahulu. Lalu, Alibaba Cloud akan meningkatkan konfigurasi di backend.

Template transkoding

Protokol encoding

Format kontainer

Konfigurasi lainnya

Video-360p

H265

m3u8 (.fmp4)

  • Resolusi (panjang tetap, tepi pendek adaptif): 640*

  • Panjang segmen: 5 dtk

  • Konfigurasikan parameter lainnya sesuai kebutuhan.

Video-540p

H265

m3u8 (.fmp4)

  • Resolusi (panjang tetap, tepi pendek adaptif): 960*

  • Panjang segmen: 5 dtk

  • Konfigurasikan parameter lainnya sesuai kebutuhan.

Video-720p

H265

m3u8 (.fmp4)

  • Resolusi (panjang tetap, tepi pendek adaptif): 1280*

  • Panjang segmen: 5 dtk

  • Konfigurasikan parameter lainnya sesuai kebutuhan.

Video-1080p

H265

m3u8 (.fmp4)

  • Resolusi (panjang tetap, tepi pendek adaptif): 1920*

  • Panjang segmen: 5 dtk

  • Konfigurasikan parameter lainnya sesuai kebutuhan.

Tugas transkoding dan pengemasan multi-bitrate

Ajukan tugas multi-bitrate

Panggil operasi SubmitMediaConvertJob untuk mengirimkan tugas transkoding untuk file video atau audio ke IMS.

Gunakan OverrideParams untuk mengatur aliran subtitle

Informasi caption tidak dapat disesuaikan dalam template transkoding. Anda harus menyetelnya secara eksplisit menggunakan OverrideParams saat Anda mengirimkan tugas.

Parameter

Tipe

Deskripsi

Subtitles

Array of Subtitle

Pengaturan aliran subtitle.

Subtitle

Parameter

Tipe

Deskripsi

Codec

String

Format encoding dari aliran subtitle. HTTP Live Streaming (HLS) hanya mendukung format VTT.

Deskripsi konfigurasi (HlsGroupConfig)

Parameter

Tipe

Deskripsi

Type

string

Menentukan jenis aliran data.

Nilai valid:

  • video: Aliran video. Hanya pengaturan terkait video yang dipertahankan selama pemrosesan.

  • audio: Aliran audio. Hanya pengaturan terkait audio yang dipertahankan selama pemrosesan.

  • hybrid: Aliran hybrid. Baik pengaturan terkait audio maupun video dipertahankan selama pemrosesan.

Bandwidth

string

Mengatur bandwidth. Parameter ini opsional. Secara default, bitrate dalam bps digunakan.

Parameter ini berlaku ketika Type diatur ke video atau hybrid.

AudioGroup

string

Grup audio yang direferensikan oleh titik akhir ingest video ini. Parameter ini berlaku ketika Type diatur ke video.

SubtitleGroup

string

Grup subtitle yang direferensikan oleh titik akhir ingest video ini. Parameter ini berlaku ketika Type diatur ke video atau hybrid.

Name

string

Properti NAME dari aliran keluaran ini dalam manifes HLS. Parameter ini wajib ketika Type diatur ke audio atau subtitle.

Group

string

Properti GROUP_ID dari aliran keluaran ini dalam manifes HLS. Parameter ini berlaku ketika Type diatur ke audio atau subtitle.

Secara default, nilainya sama dengan nilai Type.

Language

string

Properti LANGUAGE dari aliran keluaran ini dalam manifes HLS. Parameter ini berlaku ketika Type diatur ke audio atau subtitle. Nilainya harus sesuai dengan RFC 5646.

Default

boolean

Menentukan apakah akan menetapkan aliran sebagai aliran default. Parameter ini berlaku ketika Type diatur ke audio.

AutoSelect

boolean

Menentukan apakah akan memilih aliran secara otomatis. Parameter ini berlaku ketika Type diatur ke audio.

Forced

boolean

Menentukan apakah akan memaksa tampilan aliran. Parameter ini berlaku ketika Type diatur ke audio.

Skenario 1: Transkode dan hasilkan file pengemasan multi-bitrate

{
    "Config": {
        "Inputs": [
            {
                "Name": "video",
                "InputFile": {
                    "Type": "OSS",
                    "Url": "https://<Bucket>.<OSS Public Endpoint>/<Video1_Chinese>"
                }
            },
            {
                "Name": "EnglishAudio",
                "InputFile": {
                    "Type": "OSS",
                    "Url": "https://<Bucket>.<OSS Public Endpoint>/<Audio1_English>"
                }
            },
            {
                "Name": "ChineseSubtitle",
                "InputFile": {
                    "Type": "OSS",
                    "Url": "https://<Bucket>.<OSS Public Endpoint>/<Caption1_Chinese>"
                }
            },
            {
                "Name": "EnglishSubtitle",
                "InputFile": {
                    "Type": "OSS",
                    "Url": "https://<Bucket>.<OSS Public Endpoint>/<Caption1_English>"
                }
            }
        ],
        "OutputGroups": [
            {
                "Name": "Hls",
                "GroupConfig": {
                    "Type": "Hls",
                    "OutputFileBase": {
                        "Type": "OSS",
                        "Url": "https://<Bucket>.<Public Endpoint>/<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": "Any template ID in the packaging job",
                        "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": "Any template ID in the packaging job",
                        "OverrideParams": {
                            "Subtitles": [
                                {
                                    "Codec": "vtt"
                                }
                            ]
                        },
                        "HlsGroupConfig": {
                            "Type": "Subtitle",
                            "Name": "EnglishSubtitle",
                            "Language": "en",
                            "Autoselect": "TRUE",
                            "Default": "FALSE"
                        }
                    }
                ]
            }
        ]
    }
}

Periksa hasil tugas

Panggil operasi GetMediaConvertJob untuk mengambil detail tugas transkoding.

Notifikasi event callback

Jenis Event: MediaConvertComplete

Metode Konfigurasi: Anda tidak dapat memilih event ini di Konsol. Anda harus mengonfigurasinya dengan memanggil operasi SetEventCallback.

Deskripsi bidang utama

Nama Parameter

Tipe

Wajib

Deskripsi

Name

String

Ya

Nama tugas utama.

JobId

String

Ya

ID tugas.

Status

String

Ya

Hasil tugas. "Success" menunjukkan bahwa tugas berhasil. Jika ada sub-tugas yang berhasil, hasil keseluruhan dianggap berhasil.

TriggerSource

String

Tidak

Sumber pemicu. API menunjukkan bahwa tugas dikirim dengan memanggil operasi API.

FinishTime

String

Tidak

Waktu ketika tugas selesai. Formatnya harus sama dengan EventTime.

UserData

string

Tidak

Data kustom yang diteruskan saat tugas dikirim.

Contoh

{
	"FinishTime": "2025-05-09T08:03:21Z",
	"JobId": "your-job-id",
	"Status": "Success",
	"TriggerSource": "IceWorkflow",
	"UserData": "{\"ImsSrc\":\"Workflow\",\"TaskId\":\"e89a955d88ca47f0b9b79c562e5c622f\"}"
}