All Products
Search
Document Center

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

Last Updated:Apr 29, 2026

Topik ini menjelaskan cara menggunakan Intelligent Media Services (IMS) untuk mentranskode file MP4 agar mencakup beberapa track audio dan menetapkan bahasa untuk setiap track.

Workflow

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 lebih lanjut, lihat Aktifkan layanan.

Persiapan

Konfigurasi dasar IMS

  • Konfigurasi penyimpanan: Bind bucket Object Storage Service (OSS) ke IMS. Untuk informasi lebih lanjut, 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

Contoh ini menunjukkan cara membuat templat transkoding untuk empat resolusi video. Untuk petunjuknya, lihat Buat templat transkoding.

Catatan

Untuk menggunakan transkoding Narrowband HD™, buat templat yang sesuai berdasarkan tabel. 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 ke Intelligent Media Services.

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

Kebijakan untuk menetapkan tag bahasa pada aliran output. Nilai yang valid:

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

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

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

Language

String

Kode bahasa ISO 639-2 untuk track audio.

Remove

String

Menentukan 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 channel 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.

  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"
              }
            ]
          }
        }
      ]
    }
  ]
}

Skenario 3: Pilih audio berdasarkan bahasa

Contoh ini menggunakan parameter AudioSelector untuk memilih track audio dengan tag bahasa jpn dari input JapaneseFile. Track audio output yang sesuai menetapkan LanguageControl ke InputFirst, yang secara otomatis mewarisi tag 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.

Callback event

Tipe event: MediaConvertComplete

Metode konfigurasi: Event ini tidak dapat dikonfigurasi di Konsol. Anda harus mengonfigurasinya dengan memanggil operasi API SetEventCallback.

Parameter callback utama

Parameter

Jenis

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 pengguna yang Anda tentukan saat mengirim pekerjaan. Data ini diteruskan dan dikembalikan dalam callback.

Contoh

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