Transcodez et packagez des fichiers multimédias contenant plusieurs pistes audio à l’aide d’Intelligent Media Services (IMS) pour générer du contenu audiovisuel multilingue compatible avec divers appareils et lecteurs.
Flux de transcodage et de packaging
Exemple de structure de fichier packagé :
#EXTM3U
# Audio stream definitions (multi-language)
#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"
# Video stream definitions (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
Prérequis
Vérifiez qu’Intelligent Media Services (IMS) est activé. Pour plus d’informations, consultez Activer IMS.
Configuration
Configuration de base d’IMS
Stockage : associez un bucket Object Storage Service (OSS) à IMS. Pour plus d’informations, consultez Configurer un emplacement de stockage.
Rappels : configurez un rappel HTTP ou MNS pour recevoir des notifications sur l’état des tâches. Pour plus d’informations, consultez Vue d’ensemble des événements de rappel.
Configuration des modèles de transcodage
Procédure de configuration
Exemple de besoins
Codec : H.264/H.265
Résolution vidéo : 360p/540p/720p/1080p
Audio : HE-AAC à 64 kbit/s (configuration par défaut).
Exemple de configuration
Créez des modèles de transcodage pour chaque résolution vidéo requise en vous basant sur les tableaux suivants. Pour obtenir des instructions, consultez Créer un modèle de transcodage.
Pour effectuer un transcodage Narrowband HD™, créez les modèles correspondants selon le tableau, puis ouvrez un ticket afin qu’Alibaba Cloud mette à niveau votre configuration backend.
H.264
|
Modèle de transcodage |
Codec |
Format de conteneur |
Autres paramètres |
|
Video-360P |
H.264 |
m3u8(.ts) |
|
|
Video-540P |
H.264 |
m3u8(.ts) |
|
|
Video-720P |
H.264 |
m3u8(.ts) |
|
|
Video-1080P |
H.264 |
m3u8(.ts) |
|
|
Audio-64Kbps |
HE-AAC |
m3u8(.ts) |
Remarque
Ce modèle ne peut pas être créé dans la console. Utilisez l’API ou ouvrez un ticket à la place. |
H.265
Recommandation : utilisez le format de conteneur fmp4. Standard pour les appareils Apple, il est compatible avec Safari.
Alternative : le format de conteneur .ts est également utilisable, mais incompatible avec Safari.
Limitation de la console : la création d’un flux au format de conteneur fmp4 est impossible via la console. Créez plutôt le flux au format m3u8(ts). Alibaba Cloud mettra ensuite à niveau la configuration dans le backend.
|
Modèle de transcodage |
Codec |
Format de conteneur |
Autres paramètres |
|
Video-360P |
H.265 |
m3u8(.fmp4) |
|
|
Video-540P |
H.265 |
m3u8(.fmp4) |
|
|
Video-720P |
H.265 |
m3u8(.fmp4) |
|
|
Video-1080P |
H.265 |
m3u8(.fmp4) |
|
|
Audio-64Kbps |
HE-AAC |
m3u8(.fmp4) |
Remarque
Ce modèle ne peut pas être créé dans la console. Utilisez l’API ou ouvrez un ticket à la place. |
Tâche de transcodage et de packaging multi-débit
Soumission d’une tâche multi-débit
Appelez l’opération SubmitMediaConvertJob pour soumettre une tâche de transcodage concernant vos fichiers multimédias.
Paramètres HlsGroupConfig
|
Paramètre |
Type |
Description |
|
Type |
string |
Type du flux de données. Valeurs valides :
|
|
Bandwidth |
string |
Bande passante. Ce paramètre est facultatif. Par défaut, le débit binaire (en bps) est utilisé. Valide uniquement lorsque |
|
AudioGroup |
string |
Groupe audio référencé par le flux vidéo. Valide uniquement lorsque |
|
SubtitleGroup |
string |
Groupe de sous-titres référencé par le flux vidéo. Valide uniquement lorsque |
|
Name |
string |
Attribut NAME du flux de sortie dans le manifeste HLS. Ce paramètre est obligatoire lorsque |
|
Group |
string |
Attribut GROUP_ID du flux de sortie dans le manifeste HLS. Ce paramètre est valide uniquement lorsque La valeur par défaut correspond à celle du paramètre |
|
Language |
string |
Attribut LANGUAGE du flux de sortie dans le manifeste HLS. Ce paramètre est valide uniquement lorsque |
|
Default |
boolean |
Indique s’il s’agit du flux par défaut. Valide uniquement lorsque |
|
AutoSelect |
boolean |
Indique si le flux doit être sélectionné automatiquement. Valide uniquement lorsque |
|
Forced |
boolean |
Indique si le flux est forcé. Valide uniquement lorsque |
Cas d’utilisation 1 : transcodage et packaging
{
"Inputs": [
{
"Name": "video",
"InputFile": {
"Type": "OSS",
"Media": "https://<your-bucket>.<public-endpoint>/<video_1_chinese.mp4>"
}
},
{
"Name": "EnglishAudio",
"InputFile": {
"Type": "OSS",
"Media": "https://<your-bucket>.<public-endpoint>/<video_1_english.mp4>"
}
},
{
"Name": "JapaneseAudio",
"InputFile": {
"Type": "OSS",
"Media": "https://<your-bucket>.<public-endpoint>/<video_1_japanese.mp4>"
}
}
],
"OutputGroups": [
{
"GroupConfig": {
"Type": "Hls",
"OutputFileBase": {
"Type": "OSS",
"Media": "https://<your-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"
}
}
]
}
]
}
Cas d’utilisation 2 : ajout de pistes audio
Procédure :
Spécifiez une entrée nommée « ExtraAudio ». Dans la sortie, référencez cette entrée pour la transcoder en un flux audio HLS.
Définissez InputRef dans l’option ManifestExtend de GroupConfig afin de référencer le fichier « RefManifest » provenant de l’entrée et réutiliser le manifeste d’origine pour ajouter des pistes audio supplémentaires.
{
"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": "#YourAudioTemplateId",
"hlsGroupConfig": {
"Type": "audio",
"Name":"Chinese",
"Language": "zh-cn"
}
}
]
}
]
}
Cas d’utilisation 3 : remplacement de pistes audio
Ce scénario s’appuie sur le cas d’utilisation 2. Utilisez l’option Excludes dans ManifestExtend pour exclure des flux spécifiques du manifeste d’origine.
|
Paramètre |
Type |
Description |
|
Name |
string |
Attribut |
|
Type |
string |
Attribut Valeurs valides :
|
|
Language |
string |
Attribut |
{
"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": "#YourAudioTemplateId",
"hlsGroupConfig": {
"Type": "audio",
"Name":"Chinese",
"Language": "zh-cn"
}
}
]
}
]
}
Interrogation des résultats de la tâche
Appelez l’opération GetMediaConvertJob pour obtenir les détails d’une tâche de transcodage.
Notifications de rappel
Type d’événement : MediaConvertComplete
Cet événement ne peut pas être configuré dans la console. Appelez plutôt l’opération SetEventCallback.
Paramètres clés du 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 |
|
|
TriggerSource |
String |
Non |
Source ayant déclenché la tâche. La valeur |
|
|
FinishTime |
String |
Non |
Heure de fin de la tâche. Le format doit correspondre à celui d’ |
|
|
UserData |
string |
Non |
Chaîne personnalisée spécifiée lors de la soumission de la tâche. Cette valeur est transmise telle quelle et renvoyée dans le rappel. |
|
Exemple
{
"FinishTime": "2025-05-09T08:03:21Z",
"JobId": "your-job-id",
"Status": "Success",
"TriggerSource": "IceWorkflow",
"UserData": "{\"ImsSrc\":\"Workflow\",\"TaskId\":\"e89a955d88ca47f0b9b79c562e5c622f\"}"
}
Lecture de la vidéo packagée multi-débit
Utilisez ApsaraVideo Player pour lire la vidéo packagée multi-débit.
Flux de traduction vidéo et de packaging multi-débit
Préparez les entrées : fournissez le fichier source.
Traduisez : traduisez le fichier source vers les langues cibles, telles que l’anglais et le japonais, afin de générer les fichiers audio ou vidéo correspondants.
Transcodez et packagez : appelez l’opération
SubmitMediaConvertJobpour fusionner le contenu multilingue et le transcoder en une vidéo standardisée multi-débit.