Tous les produits
Search
Centre de documentation

Intelligent Media Services:Transcodage MP4 multipiste et balisage linguistique

Dernière mise à jour :Aug 11, 2026

Transcodez un fichier MP4 avec Intelligent Media Services (IMS) pour inclure plusieurs pistes audio et attribuer une langue à chacune.

Flux de travail

image

Exemple de structure du fichier de sortie :

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)

Prérequis

Vous avez activé Intelligent Media Services (IMS). Pour plus d'informations, consultez Activer le service.

Préparatifs

Configuration de base d'IMS

  • Configuration du stockage : liez un bucket Object Storage Service (OSS) à IMS. Pour plus d'informations, consultez Configurer une adresse de stockage.

  • Configuration des rappels : configurez un rappel HTTP ou Message Notification Service (MNS) pour recevoir les notifications d'état des tâches. Pour en savoir plus sur les méthodes et événements de rappel, consultez Vue d'ensemble des événements de rappel.

Modèles de transcodage

Procédure

image

Exigences de l'exemple

Codec : H.264/H.265

Résolution vidéo : 360p/540p/720p/1080p

Audio : HE-AAC à 64 kbps (configuration par défaut).

Exemple de configuration

Créez des modèles de transcodage pour quatre résolutions vidéo comme décrit ci-dessous. Pour obtenir des instructions, consultez Créer un modèle de transcodage.

Remarque

Pour utiliser le transcodage Narrowband HD™, créez un modèle correspondant basé sur les tableaux. Ensuite, soumettez un ticket pour demander une mise à niveau de la configuration backend auprès d'Alibaba Cloud.

H.264

Modèle de transcodage

Codec

Format de conteneur

Autres paramètres

Video-360P

H.264

mp4

  • Résolution (bord long fixe) : 640*

  • Configurez les autres paramètres selon vos besoins.

Video-540P

H.264

mp4

  • Résolution (bord long fixe) : 960*

  • Configurez les autres paramètres selon vos besoins.

Video-720P

H.264

mp4

  • Résolution (bord long fixe) : 1280*

  • Configurez les autres paramètres selon vos besoins.

Video-1080P

H.264

mp4

  • Résolution (bord long fixe) : 1920*

  • Configurez les autres paramètres selon vos besoins.

H.265

Modèle de transcodage

Codec

Format de conteneur

Autres paramètres

Video-360P

H.265

mp4

  • Résolution (bord long fixe) : 640*

  • Configurez les autres paramètres selon vos besoins.

Video-540P

H.265

mp4

  • Résolution (bord long fixe) : 960*

  • Configurez les autres paramètres selon vos besoins.

Video-720P

H.265

mp4

  • Résolution (bord long fixe) : 1280*

  • Configurez les autres paramètres selon vos besoins.

Video-1080P

H.265

mp4

  • Résolution (bord long fixe) : 1920*

  • Configurez les autres paramètres selon vos besoins.

Soumettre une tâche de transcodage

Appelez l'opération d'API SubmitMediaConvertJob pour soumettre une tâche de transcodage.

Paramètres audio

Paramètre

Type

Description

InputRef

String

Nom du flux d'entrée pour cette piste audio. Cette valeur doit correspondre à un Name défini dans le tableau Inputs ou AudioSelector.

LanguageControl

String

Détermine comment le tag de langue est défini pour le flux de sortie. Valeurs valides :

  • InputFirst : utilise le tag de langue du flux d'entrée. Si celui-ci ne possède pas de tag de langue, le service utilise le tag spécifié dans le paramètre Language.

  • Configured : utilise le tag de langue spécifié dans le paramètre Language.

  • None : n'ajoute aucun tag de langue. Il s'agit de la valeur par défaut.

Language

String

Code de langue ISO 639-2 pour la piste audio.

Remove

String

Indique s'il faut supprimer le flux audio.

Codec

String

Codec audio.

Profile

String

Profil d'encodage audio.

Bitrate

String

Débit binaire de l'audio de sortie.

Samplerate

String

Fréquence d'échantillonnage.

Channels

String

Nombre de canaux audio.

Volume

Object

Paramètres de contrôle du volume.

Scénario 1 : Conserver l'audio d'origine

Remarque
  1. Le tableau Inputs spécifie trois sources : un fichier vidéo principal avec audio par défaut (video), un fichier audio anglais distinct (EnglishAudio) et un fichier audio japonais distinct (JapaneseAudio).

  2. Dans OutputGroups.GroupConfig, "Type": "File" définit la sortie comme un fichier conteneur unique.

  3. Chaque piste utilise InputRef pour spécifier son entrée source et LanguageControl pour déterminer sa logique de balisage linguistique.

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

Scénario 2 : Supprimer l'audio d'origine

Remarque

Cette configuration est similaire au Scénario 1, mais elle omet la référence à la piste audio de la vidéo d'origine dans le tableau Audios. Par conséquent, le fichier de sortie ne contient que les pistes audio anglaise et japonaise.

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

Scénario 3 : Sélectionner l'audio par langue

Cet exemple utilise le paramètre AudioSelector pour sélectionner la piste audio marquée jpn à partir de l'entrée JapaneseFile. La piste audio de sortie définit LanguageControl sur InputFirst, ce qui hérite du tag de langue de l'entrée.

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

Interroger la tâche de transcodage

Appelez l'opération d'API GetMediaConvertJob pour récupérer les détails d'une tâche de transcodage.

Événement de rappel

Type d'événement : MediaConvertComplete

Cet événement n'est pas configurable dans la console. Configurez-le en appelant l'opération d'API SetEventCallback.

Paramètres de rappel clés

Paramètre

Type

Obligatoire

Description

Name

String

Oui

Nom de la tâche parente.

JobId

String

Oui

ID de la tâche.

Status

String

Oui

État de la tâche. La valeur Success indique que la tâche s'est terminée avec succès. La tâche parente est considérée comme réussie si au moins une sous-tâche aboutit.

TriggerSource

String

Non

Source du déclencheur. API indique que la tâche a été soumise via un appel d'API.

FinishTime

String

Non

Heure de fin au format UTC : yyyy-MM-ddTHH:mm:ssZ.

UserData

String

Non

Données personnalisées spécifiées lors de la soumission de la tâche, transmises et renvoyées dans le rappel.

Exemple

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