All Products
Search
Document Center

Intelligent Media Services:Transkoding MP4 multi-track dan penandaan bahasa

Last Updated:Sep 02, 2026

Transkode file MP4 menggunakan Intelligent Media Services (IMS) untuk menyertakan beberapa track audio dan menetapkan bahasa pada setiap track.

Alur Kerja

Contoh struktur file output:

Duration: 00:00:31.40, start: 0.000000, bitrate: 816 kb/s
Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 960x540 [SAR 1:1 DAR 16:9], 663 kb/s, 25 fps, 25 tbr, 12800 tbn (default)
Stream #0:1[0x2](zho): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 46 kb/s (default)
Stream #0:2[0x3](eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 46 kb/s (default)
Stream #0:3[0x4](jpn): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 46 kb/s (default)

Prasyarat

Anda telah mengaktifkan Intelligent Media Services (IMS). Untuk informasi selengkapnya, lihat Aktifkan layanan.

Persiapan

Konfigurasi dasar IMS

  • Konfigurasi penyimpanan: Bind bucket Object Storage Service (OSS) ke IMS. Untuk informasi selengkapnya, lihat Konfigurasikan alamat penyimpanan.

  • Konfigurasi callback: Konfigurasikan callback HTTP atau Message Notification Service (MNS) untuk menerima notifikasi status pekerjaan. Untuk informasi lebih lanjut mengenai metode dan event callback, lihat Ikhtisar event callback.

Templat transkoding

Prosedur

Contoh persyaratan

Kodek: H.264/H.265

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

Audio: HE-AAC pada 64 kbps (konfigurasi default).

Contoh konfigurasi

Buat templat transkoding untuk empat resolusi video seperti dijelaskan di bawah ini. Untuk petunjuknya, lihat Buat templat transkoding.

Catatan

Untuk menggunakan transkoding Narrowband HD™, buat templat yang sesuai berdasarkan tabel berikut. Kemudian, submit a ticket untuk meminta peningkatan konfigurasi backend dari Alibaba Cloud.

H.264

Templat transkoding

Kodek

Format kontainer

Parameter lainnya

Video-360P

H.264

mp4

  • Resolusi (tepi panjang tetap): 640*

  • Konfigurasikan parameter lain sesuai kebutuhan.

Video-540P

H.264

mp4

  • Resolusi (tepi panjang tetap): 960*

  • Konfigurasikan parameter lain sesuai kebutuhan.

Video-720P

H.264

mp4

  • Resolusi (tepi panjang tetap): 1280*

  • Konfigurasikan parameter lain sesuai kebutuhan.

Video-1080P

H.264

mp4

  • Resolusi (tepi panjang tetap): 1920*

  • Konfigurasikan parameter lain sesuai kebutuhan.

H.265

Templat transkoding

Kodek

Format kontainer

Parameter lainnya

Video-360P

H.265

mp4

  • Resolusi (tepi panjang tetap): 640*

  • Konfigurasikan parameter lain sesuai kebutuhan.

Video-540P

H.265

mp4

  • Resolusi (tepi panjang tetap): 960*

  • Konfigurasikan parameter lain sesuai kebutuhan.

Video-720P

H.265

mp4

  • Resolusi (tepi panjang tetap): 1280*

  • Konfigurasikan parameter lain sesuai kebutuhan.

Video-1080P

H.265

mp4

  • Resolusi (tepi panjang tetap): 1920*

  • Konfigurasikan parameter lain sesuai kebutuhan.

Kirim pekerjaan transkoding

Panggil operasi API SubmitMediaConvertJob untuk mengirim pekerjaan transkoding.

Parameter audio

Parameter

Type

Deskripsi

InputRef

String

Nama aliran input untuk track audio ini. Nilai ini harus sesuai dengan Name yang didefinisikan dalam array Inputs atau AudioSelector.

LanguageControl

String

Mengontrol cara penandaan bahasa ditetapkan untuk aliran output. Nilai yang valid:

  • InputFirst: Menggunakan penanda bahasa dari aliran input. Jika aliran input tidak memiliki penanda bahasa, layanan akan menggunakan penanda yang ditentukan dalam parameter Language.

  • Configured: Menggunakan penanda bahasa yang ditentukan dalam parameter Language.

  • None: Tidak menambahkan penanda bahasa. Ini adalah nilai default.

Language

String

Kode bahasa ISO 639-2 untuk track audio.

Remove

String

Apakah aliran audio akan dihapus.

Codec

String

Kodek audio.

Profile

String

Profil pengkodean audio.

Bitrate

String

Bitrate audio output.

Samplerate

String

Laju sampel.

Channels

String

Jumlah saluran audio.

Volume

Object

Pengaturan kontrol volume.

Skenario 1: Pertahankan audio asli

Catatan
  1. Array Inputs menentukan tiga sumber: file video utama dengan audio default (video), file audio terpisah berbahasa Inggris (EnglishAudio), dan file audio terpisah berbahasa Jepang (JapaneseAudio).

  2. Dalam OutputGroups.GroupConfig, "Type": "File" menentukan output sebagai satu file kontainer tunggal.

  3. Setiap track menggunakan InputRef untuk menentukan sumber input-nya dan LanguageControl untuk menentukan logika penandaan bahasanya.

{
  "Inputs": [
    {
      "Name": "video",
      "InputFile": {"Type": "OSS", "Media": "https://<your-bucket>.<public-endpoint>/<video-with-default-audio.mp4>"}
    },
    {
      "Name": "EnglishAudio",
      "InputFile": {"Type": "OSS", "Media": "https://<your-bucket>.<public-endpoint>/<english-audio.mp4>"}
    },
    {
      "Name": "JapaneseAudio",
      "InputFile": {"Type": "OSS", "Media": "https://<your-bucket>.<public-endpoint>/<japanese-audio.mp4>"}
    }
  ],
  "OutputGroups": [
    {
      "GroupConfig": {
        "Type": "File",
        "OutputFileBase": {
          "Type": "OSS",
          "Media": "https://<your-bucket>.<public-endpoint>/<output-path>/"
        }
      },
      "Outputs": [
        {
          "Name": "360P",
          "OutputFileName": "video/360p/360p",
          "TemplateId": "Video-360P",
          "OverrideParams": {
            "Audios": [
              {
                "InputRef": "video",
                "LanguageControl": "InputFirst"
              }, {
                "InputRef": "EnglishAudio",
                "LanguageControl": "Configured",
                "Language": "eng"
              }, {
                "InputRef": "JapaneseAudio",
                "LanguageControl": "Configured",
                "Language": "jpn"
              }
            ]
          }
        }
      ]
    }
  ]
}

Skenario 2: Hapus audio asli

Catatan

Konfigurasi ini mirip dengan Skenario 1, tetapi menghilangkan referensi ke track audio video asli dari array Audios. Akibatnya, file output hanya berisi track audio berbahasa Inggris dan Jepang.

{
  "Inputs": [
    {
      "Name": "video",
      "InputFile": {"Type": "OSS", "Media": "https://<your-bucket>.<public-endpoint>/<video-with-default-audio.mp4>"}
    },
    {
      "Name": "EnglishAudio",
      "InputFile": {"Type": "OSS", "Media": "https://<your-bucket>.<public-endpoint>/<english-audio.mp4>"}
    },
    {
      "Name": "JapaneseAudio",
      "InputFile": {"Type": "OSS", "Media": "https://<your-bucket>.<public-endpoint>/<japanese-audio.mp4>"}
    }
  ],
  "OutputGroups": [
    {
      "GroupConfig": {
        "Type": "File",
        "OutputFileBase": {
          "Type": "OSS",
          "Media": "https://<your-bucket>.<public-endpoint>/<output-path>/"
        }
      },
      "Outputs": [
        {
          "Name": "360P",
          "OutputFileName": "video/360p/360p",
          "TemplateId": "Video-360P",
          "OverrideParams": {
            "Audios": [
              {
                "InputRef": "EnglishAudio",
                "LanguageControl": "Configured",
                "Language": "eng"
              }, {
                "InputRef": "JapaneseAudio",
                "LanguageControl": "Configured",
                "Language": "jpn"
              }
            ]
          }
        }
      ]
    }
  ]
}

Skema 3: Pilih audio berdasarkan bahasa

Contoh ini menggunakan parameter AudioSelector untuk memilih track audio yang ditandai jpn dari input JapaneseFile. Track audio output menetapkan LanguageControl ke InputFirst, yang mewarisi penanda bahasa dari input.

{
  "Inputs": [
    {
      "Name": "video",
      "InputFile": {"Type": "OSS", "Media": "https://<your-bucket>.<public-endpoint>/<video-with-default-audio.mp4>"}
    },
    {
      "Name": "EnglishAudio",
      "InputFile": {"Type": "OSS", "Media": "https://<your-bucket>.<public-endpoint>/<english-audio.mp4>"}
    },
    {
      "Name": "JapaneseFile",
      "InputFile": {"Type": "OSS", "Media": "https://<your-bucket>.<public-endpoint>/<multilingual-file.mp4>"},
      "AudioSelector": [{
        "Name": "JapaneseAudio",
        "Rule": "tag",
        "TagConfig": {"language": "jpn"}
      }]
    }
  ],
  "OutputGroups": [
    {
      "GroupConfig": {
        "Type": "File",
        "OutputFileBase": {
          "Type": "OSS",
          "Media": "https://<your-bucket>.<public-endpoint>/<output-path>/"
        }
      },
      "Outputs": [
        {
          "Name": "360P",
          "OutputFileName": "video/360p/360p",
          "TemplateId": "Video-360P",
          "OverrideParams": {
            "Audios": [
              {
                "InputRef": "video",
                "LanguageControl": "InputFirst"
              }, {
                "InputRef": "EnglishAudio",
                "LanguageControl": "Configured",
                "Language": "eng"
              }, {
                "InputRef": "JapaneseAudio",
                "LanguageControl": "InputFirst"
              }
            ]
          }
        }
      ]
    }
  ]
}

Kueri pekerjaan transkoding

Panggil operasi API GetMediaConvertJob untuk mengambil detail pekerjaan transkoding.

Event callback

Tipe event: MediaConvertComplete

Event ini tidak dapat dikonfigurasi di Konsol. Konfigurasikan dengan memanggil operasi API SetEventCallback.

Parameter callback utama

Parameter

Tipe

Wajib

Deskripsi

Name

String

Ya

Nama pekerjaan induk.

JobId

String

Ya

ID pekerjaan.

Status

String

Ya

Status pekerjaan. Nilai Success menunjukkan pekerjaan berhasil diselesaikan. Pekerjaan induk dianggap berhasil jika minimal satu sub-pekerjaan berhasil.

TriggerSource

String

Tidak

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

FinishTime

String

Tidak

Waktu penyelesaian dalam format UTC: yyyy-MM-ddTHH:mm:ssZ.

UserData

String

Tidak

Data kustom yang ditentukan saat mengirim pekerjaan, diteruskan dan dikembalikan dalam callback.

Contoh

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