全部产品
Search
文档中心

Intelligent Media Services:Transkoding dan pengemasan multi-track audio

更新时间:Nov 21, 2025

Panduan ini menjelaskan cara menggunakan Intelligent Media Services (IMS) untuk transkoding dan pengemasan multi-track audio. Dengan mengikuti langkah-langkah berikut, Anda dapat menghasilkan konten media multibahasa yang kompatibel dengan berbagai perangkat.

Alur Kerja

Contoh struktur file keluaran:

#EXTM3U

# Definisi aliran audio (multibahasa)
#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.m3u8

Sebelum memulai

Aktifkan IMS untuk menggunakan fitur-fiturnya.

Konfigurasi

Konfigurasi dasar

  • Penyimpanan: Asosiasikan bucket Object Storage Service (OSS) dengan IMS. Untuk informasi selengkapnya, lihat Konfigurasi alamat penyimpanan.

  • Callback: Konfigurasikan callback HTTP atau MNS untuk menerima notifikasi status tugas. Untuk metode callback dan event-nya, lihat Ikhtisar.

Konfigurasi template transkoding

Prosedur

Persyaratan contoh

Codec: H.264, H.265

Resolusi: 360P, 540P, 720P, 1080P

Audio: HE-AAC, 64 Kbps (default)

Konfigurasi contoh

Contoh ini menunjukkan cara mengonfigurasi template transkoding untuk empat resolusi video yang diperlukan. Untuk mempelajari cara membuat templat, lihat Buat template transkoding.

Catatan

Untuk melakukan transkoding Narrowband HD™, buat template dasar berdasarkan tabel berikut. Kemudian, kirim tiket untuk peningkatan backend.

H.264

Template

Codec

Format kontainer

Parameter lainnya

Video-360P

H.264

m3u8 (.ts)

  • Resolusi (tepi panjang tetap): 640px

  • Nonaktifkan audio

  • Panjang segmen: 5 detik

  • Konfigurasi parameter lain sesuai kebutuhan

Video-540P

H.264

m3u8 (.ts)

  • Resolusi (tepi panjang tetap): 960px

  • Nonaktifkan audio

  • Panjang segmen: 5 detik

  • Konfigurasi parameter lain sesuai kebutuhan

Video-720P

H.264

m3u8 (.ts)

  • Resolusi (tepi panjang tetap): 1280px

  • Nonaktifkan audio

  • Panjang segmen: 5 detik

  • Konfigurasi parameter lain sesuai kebutuhan

Video-1080P

H.264

m3u8 (.ts)

  • Resolusi (tepi panjang tetap): 1920px

  • Nonaktifkan audio

  • Panjang segmen: 5 detik

  • Konfigurasi parameter lain sesuai kebutuhan

Audio-64Kbps

HE-AAC

m3u8 (.ts)

  • Nonaktifkan video

  • Panjang segmen: 5 detik

Catatan

Anda tidak dapat membuat template ini di konsol. Gunakan API atau kirim tiket untuk bantuan.

H.265

Catatan
  • Direkomendasikan: format kontainer fMP4. Ini adalah standar Apple dan kompatibel dengan Safari.

  • Alternatif: Format kontainer TS memungkinkan tetapi tidak kompatibel dengan Safari.

  • Batasan konsol: Anda tidak dapat membuat template dengan format kontainer fMP4 di konsol. Buat terlebih dahulu template dengan format kontainer m3u8 (.ts), lalu hubungi Alibaba Cloud untuk meningkatkan konfigurasi di backend.

Template

Codec

Format kontainer

Parameter lainnya

Video-360P

H.265

m3u8 (.fmp4)

  • Resolusi (tepi panjang tetap): 640px

  • Nonaktifkan audio

  • Panjang segmen: 5 detik

  • Konfigurasi parameter lain sesuai kebutuhan

Video-540P

H.265

m3u8 (.fmp4)

  • Resolusi (tepi panjang tetap): 960px

  • Nonaktifkan audio

  • Panjang segmen: 5 detik

  • Konfigurasi parameter lain sesuai kebutuhan

Video-720P

H.265

m3u8 (.fmp4)

  • Resolusi (tepi panjang tetap): 1280px

  • Nonaktifkan audio

  • Panjang segmen: 5 detik

  • Konfigurasi parameter lain sesuai kebutuhan

Video-1080P

H.265

m3u8 (.fmp4)

  • Resolusi (tepi panjang tetap): 1920px

  • Nonaktifkan audio

  • Panjang segmen: 5 detik

  • Konfigurasi parameter lain sesuai kebutuhan

Audio-64Kbps

HE-AAC

m3u8 (.fmp4)

  • Nonaktifkan video

  • Panjang segmen: 5 detik

Catatan

Anda tidak dapat membuat template ini di konsol. Gunakan API atau kirim tiket untuk bantuan.

Kirim tugas transkoding

Mulai tugas multi-bitrate

Panggil operasi SubmitMediaConvertJob untuk mengirim tugas transkoding.

Parameter Config (HlsGroupConfig)

Parameter

Tipe

Deskripsi

Type

string

Menentukan jenis aliran.

Nilai yang valid:

  • video: aliran video. Hanya pengaturan terkait video yang diproses.

  • audio: aliran audio. Hanya pengaturan terkait audio yang diproses.

  • hybrid: aliran hibrida. Pengaturan terkait audio dan video diproses.

Bandwidth

string

Bandwidth. Parameter ini opsional.

Parameter ini berlaku ketika Type diatur ke video atau hybrid.

AudioGroup

string

Kelompok audio yang dirujuk oleh aliran video. Parameter ini berlaku ketika Type diatur ke video.

SubtitleGroup

string

Kelompok subtitle yang dirujuk oleh aliran video. Parameter ini berlaku ketika Type diatur ke video atau hybrid.

Name

string

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

Group

string

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

Secara default, nilainya sama dengan Type.

Language

string

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

Default

boolean

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

AutoSelect

boolean

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

Forced

boolean

Menentukan apakah aliran ditampilkan secara paksa. Parameter ini berlaku ketika Type diatur ke audio.

Skenario 1: Transkode dan hasilkan paket multi-bitrate

{
  "Inputs": [
    {
      "Name": "video",
      "InputFile": {
        "Type": "OSS",
        "Media": "https://<Bucket>.<Public_Endpoint>/<video_1_chinese>"
      }
    },
    {
      "Name": "EnglishAudio",
      "InputFile": {
        "Type": "OSS",
        "Media": "https://<Bucket>.<Public_Endpoint>/<video_1_english>"
      }
    },
    {
      "Name": "JapaneseAudio",
      "InputFile": {
        "Type": "OSS",
        "Media": "https://<Bucket>.<Public_Endpoint>/<video_1_japanese>"
      }
    }
  ],
  "OutputGroups": [
    {
      "GroupConfig": {
        "Type": "Hls",
        "OutputFileBase": {
          "Type": "OSS",
          "Media": "https://<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"
                    }
                }
            ]
        }
    ]
}

Skenario 2: Tambahkan track audio ke manifes HLS yang sudah ada

Langkah-langkah:

  1. Tentukan input bernama ExtraAudio. Di output, rujuk input ini untuk mentranskode menjadi aliran HLS audio.

  2. Atur InputRef di opsi ManifestExtend dalam GroupConfig untuk merujuk file RefManifest dari input. Hal ini menggunakan kembali manifes tersebut, sehingga Anda dapat menambahkan track audio tambahan berdasarkan manifes aslinya.

{
  "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": "#AudioTemplateId",
          "hlsGroupConfig": {
            "Type": "audio",
            "Name":"Chinese",
            "Language": "zh-cn"
          }
        }
      ]
    }
  ]
}

Skenario 3: Ganti track audio dalam manifes HLS yang sudah ada

Ini merupakan pengembangan dari Skenario 2. Tambahkan opsi Excludes di ManifestExtend untuk mengecualikan aliran tertentu dari manifes asli.

Parameter

Tipe

Deskripsi

Name

string

Name aliran yang akan dikecualikan.

Type

string

Type aliran yang akan dikecualikan.

Nilai yang valid:

  • Audio

  • Subtitle

Language

string

Language aliran yang akan dikecualikan. Nilainya harus sesuai dengan RFC 5646.

{
  "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": "#AudioTemplateId",
          "hlsGroupConfig": {
            "Type": "audio",
            "Name":"Chinese",
            "Language": "zh-cn"
          }
        }
      ]
    }
  ]
}

Kueri hasil tugas

Panggil operasi GetMediaConvertJob untuk mendapatkan detail tugas transkoding.

Event callback

Jenis event: MediaConvertComplete

Metode konfigurasi: Event ini tidak dapat dikonfigurasi di konsol. Konfigurasikan dengan memanggil SetEventCallback.

Parameter callback utama

Parameter

Tipe

Wajib

Deskripsi

Name

String

Ya

Nama tugas utama.

JobId

String

Ya

ID tugas.

Status

String

Ya

Status tugas. Success menunjukkan bahwa setidaknya satu output (subtugas) berhasil.

TriggerSource

String

Tidak

Sumber yang memicu tugas. API menunjukkan bahwa tugas dikirim melalui panggilan API.

FinishTime

String

Tidak

Waktu penyelesaian tugas, dalam format UTC.

UserData

string

Tidak

String kustom yang ditentukan saat mengirim tugas. String 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

Gunakan ApsaraVideo Player untuk memutar video yang telah dikemas.

Penerjemahan video + Pengemasan multi-bitrate

  1. Persiapkan file sumber.

  2. Terjemahkan file sumber ke bahasa target (seperti Inggris dan Jepang) untuk menghasilkan file audio atau video yang sesuai.

  3. Panggil operasi SubmitMediaConvertJob untuk mentranskode dan mengemas konten multibahasa menjadi video multi-bitrate yang distandardisasi.