Tous les produits
Search
Centre de documentation

Intelligent Media Services:Bonnes pratiques pour le transcodage et l'empaquetage multi-sous-titres

Dernière mise à jour :Aug 25, 2026

Utilisez Alibaba Cloud Intelligent Media Services (IMS) pour transcoder et empaqueter des fichiers audio et vidéo contenant plusieurs sous-titres, afin de générer des contenus multimédias multi-sous-titres lisibles sur divers types d'appareils.

Flux de travail de transcodage et d'empaquetage

Pour générer des contenus multimédias multi-sous-titres avec IMS, suivez les étapes ci-dessous :

  1. Préparez l'environnement. Activez IMS, liez un compartiment OSS, configurez les rappels et téléchargez les fichiers source. Consultez les sections Prérequis et Préparation.

  2. Créez des modèles de transcodage pour les flux vidéo et audio. Reportez-vous à la section Configuration des modèles de transcodage.

  3. Soumettez une tâche de transcodage et d'empaquetage multi-débit. Voir la section Soumission d'une tâche multi-débit.

  4. Interrogez le résultat de la tâche et vérifiez la sortie empaquetée. Consultez les sections Interrogation du résultat de la tâche et Vérification de la sortie empaquetée.

    L'organigramme suivant illustre le flux de travail de transcodage et d'empaquetage.

image

Exemple de structure de fichier empaqueté

L'exemple ci-dessous présente la structure de liste de lecture d'une sortie empaquetée :

#EXTM3U

# Audio stream definitions (multi-language)
#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"

# Video stream definitions (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

# Subtitle stream definitions (multi-language)
#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"

Prérequis

  • Intelligent Media Services est activé. Pour plus d'informations, consultez la rubrique Activation d'IMS.

Préparation

Configuration de base d'IMS

  • Configuration du stockage — Liez un compartiment OSS à IMS. Pour en savoir plus, consultez la rubrique Configuration d'une adresse de stockage.

  • Configuration des rappels — Configurez un rappel HTTP ou un rappel MNS pour recevoir les notifications d'état des tâches. Pour obtenir des informations générales sur les méthodes de rappel et les événements de rappel, consultez la rubrique Aperçu des événements de rappel.

  • Fichiers source — Téléchargez les fichiers vidéo, audio et de sous-titres source dans le compartiment OSS lié à IMS. L'exemple de tâche présenté dans cette rubrique fait référence à ces fichiers via leurs URL OSS.

Configuration des modèles de transcodage

Flux de configuration

L'organigramme suivant illustre le flux de configuration des modèles de transcodage.

image

Exigences de l'exemple

Cet exemple repose sur les exigences suivantes :

  • Protocole d'encodage — H264 ou H265

  • Résolution vidéo — 360P, 540P, 720P ou 1080P

  • Audio — HE-AAC à 64 Kbps. Les autres paramètres audio utilisent les valeurs par défaut.

  • Sous-titres — M3U8 (VTT)

Exemple de configuration

Cet exemple utilise quatre niveaux de qualité vidéo. Créez les modèles de transcodage vidéo comme indiqué dans les tableaux suivants. Pour plus de détails, consultez la rubrique Création d'un modèle de transcodage.

L'exemple de tâche de cette rubrique fait également référence à un modèle de transcodage audio nommé Audio-64Kbps pour les sorties audio HE-AAC. Assurez-vous que ce modèle est créé avant de soumettre la tâche d'empaquetage.

Pour utiliser le transcodage Narrowband HD, créez les modèles correspondants selon les descriptions des tableaux, puis soumettez un ticket. Alibaba Cloud mettra ensuite à niveau la configuration en arrière-plan.

Les tableaux suivants décrivent les modèles pour les protocoles d'encodage H264 et H265. Si vous utilisez H265, tenez compte des considérations suivantes concernant le format de conteneur :

  • Option privilégiée — Utilisez le format de conteneur fmp4. Il s'agit du protocole standard Apple et fonctionne bien avec le navigateur Safari.

  • Alternative — Le format de conteneur ts fonctionne également, mais il n'est pas compatible avec Safari.

  • Limitation de la console — Vous ne pouvez pas créer le format de conteneur fmp4 directement dans la console. Commencez par créer le modèle avec le format de conteneur m3u8(ts). Alibaba Cloud mettra ensuite à niveau la configuration en arrière-plan.

H264

Modèle de transcodage

Protocole d'encodage

Format de conteneur

Autres paramètres

Video-360P

H264

m3u8(.ts)

Résolution : 640 pixels sur le côté long (le côté court est adaptatif). Durée du segment : 5 secondes. Configurez les autres paramètres selon vos besoins.

Video-540P

H264

m3u8(.ts)

Résolution : 960 pixels sur le côté long (le côté court est adaptatif). Durée du segment : 5 secondes. Configurez les autres paramètres selon vos besoins.

Video-720P

H264

m3u8(.ts)

Résolution : 1280 pixels sur le côté long (le côté court est adaptatif). Durée du segment : 5 secondes. Configurez les autres paramètres selon vos besoins.

Video-1080P

H264

m3u8(.ts)

Résolution : 1920 pixels sur le côté long (le côté court est adaptatif). Durée du segment : 5 secondes. Configurez les autres paramètres selon vos besoins.

H265

Modèle de transcodage

Protocole d'encodage

Format de conteneur

Autres paramètres

Video-360P

H265

m3u8(.fmp4)

Résolution : 640 pixels sur le côté long (le côté court est adaptatif). Durée du segment : 5 secondes. Configurez les autres paramètres selon vos besoins.

Video-540P

H265

m3u8(.fmp4)

Résolution : 960 pixels sur le côté long (le côté court est adaptatif). Durée du segment : 5 secondes. Configurez les autres paramètres selon vos besoins.

Video-720P

H265

m3u8(.fmp4)

Résolution : 1280 pixels sur le côté long (le côté court est adaptatif). Durée du segment : 5 secondes. Configurez les autres paramètres selon vos besoins.

Video-1080P

H265

m3u8(.fmp4)

Résolution : 1920 pixels sur le côté long (le côté court est adaptatif). Durée du segment : 5 secondes. Configurez les autres paramètres selon vos besoins.

Tâche de transcodage et d'empaquetage multi-débit

Une fois la préparation terminée, soumettez une tâche de transcodage et d'empaquetage multi-débit, puis interrogez le résultat de la tâche.

Soumission d'une tâche multi-débit

Appelez l'opération SubmitMediaConvertJob pour soumettre une tâche de transcodage pour un fichier vidéo ou audio à Intelligent Media Services.

Utilisation d'OverrideParams pour définir les flux de sous-titres

Vous ne pouvez pas personnaliser les informations de sous-titres dans un modèle de transcodage. Pour configurer les flux de sous-titres, définissez explicitement les informations de sous-titres avec OverrideParams lors de la soumission de la tâche. Les tableaux suivants décrivent les paramètres des flux de sous-titres.

Subtitles

Paramètre

Type

Description

Subtitles

Array of Subtitle

Paramètres du flux de sous-titres.

Subtitle

Paramètre

Type

Description

Codec

String

Format d'encodage du flux de sous-titres. HLS prend uniquement en charge le format vtt.

Description de la configuration (HlsGroupConfig)

Chaque sortie de l'exemple de tâche contient un objet HlsGroupConfig qui décrit le flux de sortie dans le manifeste HLS. Le tableau suivant décrit les paramètres.

Paramètre

Type

Description

Type

string

Spécifie le type de flux de données. Valeurs valides : Video, Audio, Subtitle et Hybrid. Lors du traitement, seuls les paramètres correspondant au type de flux sont conservés : paramètres liés à la vidéo pour Video, paramètres liés à l'audio pour Audio, et paramètres liés à l'audio et à la vidéo pour Hybrid.

Bandwidth

string

Bande passante. Ce paramètre est facultatif. Le débit binaire (bps) est utilisé par défaut. Ce paramètre prend effet lorsque Type est Video ou Hybrid.

AudioGroup

string

Groupe audio référencé par ce flux vidéo. Ce paramètre prend effet lorsque Type est Video.

SubtitleGroup

string

Groupe de sous-titres référencé par ce flux vidéo. Ce paramètre prend effet lorsque Type est Video ou Hybrid.

Name

string

Attribut NAME de ce flux de sortie dans le manifeste HLS. Ce paramètre est requis lorsque Type est Audio ou Subtitle.

Group

string

Attribut GROUP_ID de ce flux de sortie dans le manifeste HLS. Ce paramètre prend effet lorsque Type est Audio ou Subtitle. Valeur par défaut : identique à la valeur de Type.

Language

string

Attribut LANGUAGE de ce flux de sortie dans le manifeste HLS. Ce paramètre prend effet lorsque Type est Audio ou Subtitle. La valeur doit être conforme à la norme RFC 5646.

Default

boolean

Indique si le flux doit être défini comme flux par défaut. Ce paramètre prend effet lorsque Type est Audio ou Subtitle.

AutoSelect

boolean

Indique si le flux doit être sélectionné automatiquement. Ce paramètre prend effet lorsque Type est Audio ou Subtitle.

Forced

boolean

Indique si l'affichage du flux doit être forcé. Ce paramètre prend effet lorsque Type est Audio ou Subtitle.

Exemple : transcodage et génération de fichiers empaquetés multi-débit

L'exemple suivant définit quatre entrées : une vidéo (video), une piste audio anglaise (EnglishAudio), une piste de sous-titres chinois (ChineseSubtitle), et une piste de sous-titres anglais (EnglishSubtitle). Les sorties incluent deux niveaux de qualité vidéo (720P et 360P), deux pistes audio et deux pistes de sous-titres. Cet exemple utilise deux des quatre modèles vidéo que vous avez créés. Vous pouvez ajouter ou supprimer des sorties vidéo selon vos besoins.

Chaque sortie, y compris chaque sortie de sous-titres, nécessite un TemplateId. Pour une sortie de sous-titres, spécifiez l'ID de n'importe quel modèle de transcodage dans la tâche d'empaquetage. Dans l'exemple suivant, remplacez <TemplateId> par un ID de modèle existant, tel que Video-360P.

Le JSON suivant correspond au paramètre Config de la requête SubmitMediaConvertJob. Remplacez les espaces réservés entre crochets angulaires par vos valeurs réelles.

{
    "Config": {
        "Inputs": [
            {
                "Name": "video",
                "InputFile": {
                    "Type": "OSS",
                    "Url": "https://<Bucket>.<OSSPublicEndpoint>/<Video1Chinese>"
                }
            },
            {
                "Name": "EnglishAudio",
                "InputFile": {
                    "Type": "OSS",
                    "Url": "https://<Bucket>.<OSSPublicEndpoint>/<Audio1English>"
                }
            },
            {
                "Name": "ChineseSubtitle",
                "InputFile": {
                    "Type": "OSS",
                    "Url": "https://<Bucket>.<OSSPublicEndpoint>/<Subtitle1Chinese>"
                }
            },
            {
                "Name": "EnglishSubtitle",
                "InputFile": {
                    "Type": "OSS",
                    "Url": "https://<Bucket>.<OSSPublicEndpoint>/<Subtitle1English>"
                }
            }
        ],
        "OutputGroups": [
            {
                "Name": "Hls",
                "GroupConfig": {
                    "Type": "Hls",
                    "OutputFileBase": {
                        "Type": "OSS",
                        "Url": "https://<Bucket>.<PublicEndpoint>/<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": "<TemplateId>",
                        "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": "<TemplateId>",
                        "OverrideParams": {
                            "Subtitles": [
                                {
                                    "Codec": "vtt"
                                }
                            ]
                        },
                        "HlsGroupConfig": {
                            "Type": "Subtitle",
                            "Name": "EnglishSubtitle",
                            "Language": "en",
                            "Autoselect": "TRUE",
                            "Default": "FALSE"
                        }
                    }
                ]
            }
        ]
    }
}

Interrogation du résultat de la tâche

Appelez l'opération GetMediaConvertJob pour obtenir les détails de la tâche de transcodage.

Événement de rappel

Lorsqu'une tâche d'empaquetage est terminée, IMS envoie un événement de rappel. Le type d'événement (EventType) est MediaConvertComplete. La console ne permet pas encore de sélectionner cet événement. Pour le configurer, appelez l'opération SetEventCallback.

Description des champs clés

Le tableau suivant décrit les champs clés de l'événement de rappel.

Paramètre

Type

Obligatoire

Description

Name

String

Oui

Nom de la tâche principale.

JobId

String

Oui

ID de la tâche.

Status

String

Oui

État de la tâche. La valeur Success indique que la tâche a réussi. Si une sous-tâche réussit, le résultat global est considéré comme réussi.

TriggerSource

String

Non

Source du déclencheur. La valeur API indique que la tâche a été soumise via l'API.

FinishTime

String

Non

Heure de fin de la tâche. Le format doit être identique à celui de EventTime.

UserData

string

Non

Données personnalisées transmises lors de la soumission de la tâche.

L'exemple suivant montre un événement de rappel :

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

Vérification de la sortie empaquetée

Une valeur Status égale à Success indique que la tâche a réussi. Pour confirmer que les fichiers empaquetés sont complets, comparez les fichiers de sortie dans votre compartiment OSS avec la structure présentée dans la section Exemple de structure de fichier empaqueté. Vérifiez que les listes de lecture vidéo, audio et de sous-titres sont toutes générées comme prévu.