Paramètres de production, configurations avancées et exemples SDK pour la mise en correspondance image-texte dans des scénarios courants.
Le Script vers vidéo et la mise en correspondance image-texte utilisent tous deux l'API SubmitBatchMediaProducingJob pour soumettre une tâche. Pour les différencier sur la base des paramètres, consultez les Différences de paramètres.
Dans cette API, la région spécifiée dans l'URL OSS de tous les éléments multimédias doit être identique au point de terminaison du service OpenAPI.
Régions prises en charge : Chine (Shanghai), Chine (Pékin), Chine (Hangzhou), Chine (Shenzhen), États-Unis (Silicon Valley) et Singapour.
Remplacez tous les espaces réservés dans les exemples ([your-bucket], [your-region-id], [your-file-name], [your-file-path] et les ID des éléments multimédias) par vos valeurs réelles.
Pour mieux comprendre ce document, commencez par lire le guide Production vidéo par lots afin de vous familiariser avec les concepts et le flux de travail des scénarios courants de mise en correspondance image-texte.
-
La mise en correspondance image-texte propose deux modes de génération de vidéos :
Scripts globaux
Script de storyboard
Référence API
Pour soumettre une tâche de production vidéo par lots qui mixe intelligemment plusieurs éléments vidéo, audio et image, consultez l'API SubmitBatchMediaProducingJob. Les principaux paramètres de l'API sont détaillés dans les sections
InputConfig,EditingConfigetOutputConfigci-dessous.Pour obtenir des informations détaillées sur une tâche de création vidéo par lots, consultez l'API GetBatchMediaProducingJob.
InputConfig
InputConfig spécifie les paramètres des clips vidéo, des voix off, de la musique d'ambiance et des autocollants.
|
Parameter |
Type |
Description |
Example |
Required |
Supported modes |
|
MediaArray |
List<String> |
|
["**b4549d46c88681030f6e","549d46c88b4681030f6e**"] |
MediaArray ou MediaSearchInput est requis |
Les deux |
|
MediaSearchInput |
Recherche intelligemment des éléments correspondants en spécifiant une bibliothèque de recherche et un texte descriptif. |
{"LibSearchCondition":{"SearchLibs":["ims-default-search-lib","test-20"],"SearchText":"Alibaba Cloud assistant is learning how to livestream"}} |
Les deux |
||
|
TitleArray |
List<String> |
Un tableau de titres. Un titre est sélectionné aléatoirement pour chaque production. Maximum de 50 titres, chacun pouvant contenir jusqu'à 50 caractères. |
["Title 1","Title 2"] |
Non |
Les deux |
|
SubHeadingArray |
List<SubHeading> |
Paramètres de sous-titres multiniveaux. |
[{"Level":1,"TitleArray":["Level 1 subtitle 1","Level 1 subtitle 2"]},{"Level":3,"TitleArray":["Level 3 subtitle"]}] |
Non |
Les deux |
|
SpeechTextArray |
List<String> |
|
["Voiceover content 1","Voiceover content 2"] |
Non |
Scripts globaux |
|
SceneInfo |
Paramètres de configuration de la scène. |
Oui |
Script de storyboard |
||
|
StickerArray |
List<Sticker> |
|
[{"MediaId":"**9d46c8b4548681030f6e**","X":10,"Y":100,"Width":300,"Height":300,"Opacity":0.6}] |
Non |
Les deux |
|
BackgroundMusicArray |
List<String> |
|
["**b4549d46c88681030f6e","549d46c88b4681030f6e**"] |
Non |
Les deux |
|
BackgroundImageArray |
List<String> |
|
["**b4549d46c88681030f6e","549d46c88b4681030f6e**"] |
Non |
Les deux |
MediaSearchInput
|
Parameter |
Type |
Description |
Required |
|
LibSearchCondition |
Configuration des conditions de la bibliothèque de recherche. |
Obligatoire |
LibSearchCondition
|
Parameter |
Type |
Description |
Example |
Required |
|
SearchLibs |
List<String> |
Une liste de bibliothèques de recherche. |
["ims-default-search-lib"] |
Oui |
|
SearchText |
String |
Texte descriptif pour la mise en correspondance des éléments. Maximum de 20 caractères. |
Ocean, coral reef, seals, dolphins, marine environment |
Oui |
SceneInfo
|
Parameter |
Type |
Description |
Required |
|
Scene |
String |
Le type de scène de mise en correspondance. Pour les scénarios courants, définissez cette valeur sur |
Oui |
|
ShotInfo |
Configuration du storyboard. Remarque
Ce paramètre s'applique uniquement au mode Script de storyboard. |
Non |
ShotInfo
Ce paramètre s'applique uniquement au mode Script de storyboard.
|
Parameter |
Type |
Description |
Required |
|
ShotScripts |
List<ShotScript> |
Un tableau de scripts de storyboard. |
Oui |
ShotScript
Ce paramètre s'applique uniquement au mode Script de storyboard.
|
Parameter |
Type |
Description |
Example |
Required |
|
ScriptText |
String |
Le texte du script pour une scène unique, utilisé pour décrire le contenu de la scène aux fins de la mise en correspondance visuelle. |
He is recently developing a new magic potion. |
Non |
|
SpeechText |
String |
|
The old magician Danny is fiddling with strange instruments; he is recently developing a new magic potion. |
Non |
|
Duration |
Float |
|
5 |
Non |
|
Volume |
Float |
|
0.5 |
Non |
Exemple : Mode Scripts globaux
{
// Choose either MediaArray or MediaSearchInput
"MediaArray": [
"****9d46c886b45481030f6e****",
"****c886810b4549d4630f6e****",
"http://[your-bucket].oss-[your-region-id].aliyuncs.com/test1.mp4",
"http://[your-bucket].oss-[your-region-id].aliyuncs.com/test2.png"
],
// Choose either MediaArray or MediaSearchInput
"MediaSearchInput": {
"LibSearchCondition": {
"SearchLibs": [
"ims-default-search-lib",
"test-20"
],
"SearchText": "Alibaba Cloud assistant is learning how to livestream"
}
},
"TitleArray": [
"Freshippo opens a new location in Huilongguan",
"A new Freshippo store opens"
],
"SubHeadingArray": [
{
"Level": 1,
"TitleArray": ["Subtitle 1", "Subtitle 2"]
},
{
"Level": 3,
"TitleArray": ["Level 3 subtitle"]
}
],
"SpeechTextArray": [
"A new Freshippo store just opened in the nearby mall. It's the grand opening today, so I rushed over to check it out. The store isn't huge, but it's packed with people. Snacks and drinks are pretty cheap, and the checkout lines are super long. Come and see for yourself!",
"A new Freshippo store just opened in the nearby mall. It's the grand opening today, so I rushed over to check it out.",
"<speak>Today, our hero, table tennis legend <phoneme alphabet="ipa" ph="mɑː lʊŋ">Ma Long</phoneme>, is striving for the pinnacle of glory.</speak>"
],
"Sticker": {
"MediaId": "****b681034549d46c880f6e****",
"X": 10,
"Y": 100,
"Width": 300,
"Height": 300,
"Opacity": 0.6
},
"StickerArray": [
{
"MediaId": "****9d46c8b4548681030f6e****",
"X": 10,
"Y": 100,
"Width": 300,
"Height": 300,
"Opacity": 0.6
},
{
"MediaURL": "http://[your-bucket].oss-[your-region-id].aliyuncs.com/test3.png",
"X": 10,
"Y": 100,
"Width": 300,
"Height": 300
}
],
"BackgroundMusicArray": [
"****b4549d46c88681030f6e****",
"****549d46c88b4681030f6e****",
"http://[your-bucket].oss-[your-region-id].aliyuncs.com/test4.mp3"
],
"BackgroundImageArray": [
"****6c886b4549d481030f6e****",
"****9d46c8548b4681030f6e****",
"http://[your-bucket].oss-[your-region-id].aliyuncs.com/test1.png"
]
}
Exemple : mode Storyboard Script
{
// Choose either MediaArray or MediaSearchInput
"MediaArray": ["****9d46c886b45481030f6e****", "****c886810b4549d4630f6e****"],
// Choose either MediaArray or MediaSearchInput
"MediaSearchInput": {
"LibSearchCondition": {
"SearchLibs": [
"ims-default-search-lib",
"test-20"
],
"SearchText": "Alibaba Cloud assistant is learning how to livestream"
}
},
"SceneInfo": {
"Scene": "General", // General matching
"ShotInfo": {
"ShotScripts": [
{
"ScriptText": "This is the visual script for the first scene",
"SpeechText": "This is the voiceover for the first scene. The scene's duration will match the voiceover length."
},
{
"ScriptText": "This is the visual script for the second scene. With no voiceover, you can set a custom duration.",
"Duration": 5.0, // Can be set when there's no voiceover script.
"Volume": 1.0 // Set the volume of video materials.
},
{
"ScriptText": "This is the visual script for the third scene.",
"SpeechText": "<speak>Voiceover supports SSML. The battle is <phoneme alphabet=\"py\" ph=\"zheng4 hao3\">fierce</phoneme>. Today, our hero, table tennis legend Ma Long, is striving for the pinnacle of glory. <s>In the quarter-finals against the formidable Togami Shunsuke, Ma Long showed no fear, giving his all in every rally.</s> His precise shots and calm judgment gave him the upper hand. In the end, Ma Long successfully defeated his opponent to advance to the semi-finals.<break time=\"1000ms\"/></speak>"
}
]
}
},
"TitleArray": [
"Freshippo opens a new location in Huilongguan",
"A new Freshippo store opens"
],
"SubHeadingArray": [
{
"Level": 1,
"TitleArray": ["Subtitle 1", "Subtitle 2"]
},
{
"Level": 3,
"TitleArray": ["Level 3 subtitle"]
}
],
"StickerArray": [
{
"MediaId": "****9d46c8b4548681030f6e****",
"X": 10,
"Y": 100,
"Width": 300,
"Height": 300
},
{
"MediaURL": "http://[your-bucket].oss-[your-region-id].aliyuncs.com/test3.png",
"X": 10,
"Y": 100,
"Width": 300,
"Height": 300
}
],
"BackgroundMusicArray": [
"****b4549d46c88681030f6e****",
"****549d46c88b4681030f6e****",
"http://[your-bucket].oss-[your-region-id].aliyuncs.com/test4.mp3"
],
"BackgroundImageArray": [
"****6c886b4549d481030f6e****",
"****9d46c8548b4681030f6e****",
"http://[your-bucket].oss-[your-region-id].aliyuncs.com/test1.png"
]
}
EditingConfig
Le paramètre EditingConfig contrôle les titres, le volume, le positionnement et d'autres paramètres de production. Laissez ce champ vide pour utiliser les valeurs par défaut.
Les paramètres sont identiques pour les deux modes de génération.
|
Paramètre |
Type |
Description |
Exemple |
Obligatoire |
|
JSON |
Configuration des assets vidéo d'entrée. |
Non |
||
|
JSON |
Configuration des titres. |
Non |
||
|
SubHeadingConfig |
JSON |
Configuration des sous-titres multiniveaux. Champs JSON :
|
Non |
|
|
JSON |
Configuration de la voix off. |
Non |
||
|
JSON |
Configuration de la musique de fond. |
{"Volume":0.2} |
Non |
|
|
JSON |
Configuration de l'image d'arrière-plan. Sans effet si une image d'arrière-plan est spécifiée dans InputConfig. |
{"SubType":"Blur","Radius":0.5} |
Non |
|
|
JSON |
Configuration du processus de mixage et de montage. |
Non |
||
|
JSON |
Configuration du canevas pour l'aperçu frontal. |
{"Width": 1080,"Height": 1920} |
Non |
|
|
ProduceConfig |
JSON |
Configuration standard de montage et de production. Pour les champs, consultez EditingProduceConfig. |
{"AutoRegisterInputVodMedia":true,"OutputWebmTransparentChannel":true,"CoverConfig":{"StartTime":3.3},"AudioChannelCopy":"left","PipelineId":"d54a97cff4108b555b01166d4b","MaxBitrate":5000,"KeepOriginMaxBitrate":false,"KeepOriginVideoMaxFps":false} |
Non |
ProcessConfig
|
Paramètre |
Type |
Description |
Exemple |
Obligatoire |
|
SingleShotDuration |
Float |
Durée de chaque plan segmenté (en secondes) lors du fractionnement des assets vidéo longs. |
5 |
Non. Valeur par défaut : 3. |
|
EnableClipSplit |
Boolean |
Active le fractionnement des clips par IA (fractionne les assets longs en fonction des changements de scène). Si la valeur est true, SingleShotDuration est ignoré. |
false |
Non. Valeur par défaut : false. |
|
AllowVfxEffect |
Boolean |
Indique s'il faut ajouter des effets spéciaux. |
true |
Non. Valeur par défaut : false. |
|
VfxEffectProbability |
Float |
Probabilité d'application d'un effet à chaque clip. Plage : 0,0 à 1,0. Prend en charge 2 décimales. |
0.6 |
Non. Valeur par défaut : 0,5. |
|
VfxFirstClipEffectList |
List<String> |
|
["slightshow","starfieldshinee"] |
Non |
|
VfxNotFirstClipEffectList |
List<String> |
|
["zoomslight","zoom"] |
Non |
|
AllowTransition |
Boolean |
Indique s'il faut ajouter des effets de transition. |
true |
Non. Valeur par défaut : false. |
|
TransitionDuration |
Float |
Durée des transitions en secondes. Si |
0.5 |
Non. Valeur par défaut : 0,5. |
|
TransitionList |
List<String> |
Une liste de transitions personnalisées. Si |
["directional", "linearblur"] |
Non |
|
UseUniformTransition |
Boolean |
Indique s'il faut utiliser une transition uniforme tout au long d'une même vidéo. |
true |
Non. Valeur par défaut : true. |
|
AllowFilter |
Boolean |
Indique s'il faut ajouter des filtres personnalisés. |
false |
Non. Valeur par défaut : false. |
|
FilterList |
List<String> |
Une liste de filtres personnalisés. Si |
["m1", "m2"] |
Non |
|
AllowDuplicateMatch |
Boolean |
Indique si un clip correspondant peut être réutilisé. |
false |
Non. Valeur par défaut : false. |
|
ImageDuration |
Float |
La durée des assets d'images statiques, en secondes. |
2 |
Non. Valeur par défaut : 2. |
Exemple
Tous les paramètres EditingConfig sont facultatifs. Configuration par défaut :
{
"MediaConfig": {
"Volume": 0 // Input video assets are muted by default
},
"TitleConfig": {
"Alignment": "TopCenter",
"AdaptMode": "AutoWrap",
"Font": "Alibaba PuHuiTi 2.0 95 ExtraBold",
"SizeRequestType": "Nominal",
"Y": 0.1, // Y-coordinate for portrait video
"Y": 0.05, // Y-coordinate for landscape video
"Y": 0.08 // Y-coordinate for square video
},
"SpeechConfig": {
"Volume": 1, // Voiceover uses original volume by default
"SpeechRate": 0,
"Voice": null,
"Style": null,
"CustomizedVoice": null, // Voice ID. If set, Voice and Style are ignored.
"AsrConfig": {
"Alignment": "TopCenter",
"AdaptMode": "AutoWrap",
"Font": "Alibaba PuHuiTi 2.0 65 Medium",
"SizeRequestType": "Nominal",
"Spacing": -1,
"Y": 0.8, // Subtitle Y-coordinate for portrait video
"Y": 0.9, // Subtitle Y-coordinate for landscape video
"Y": 0.85 // Subtitle Y-coordinate for square video
}
},
"SubHeadingConfig": {
"1": {
"Y": 0.3,
"FontSize": 40
},
"3": {
"Y": 0.5,
"FontSize": 30
}
},
"BackgroundMusicConfig": {
"Volume": 0.2, // Background music at 20% volume by default
"Style": null
},
"ProcessConfig": {
"SingleShotDuration": 3, // Duration of segmented shots. Choose one: SingleShotDuration or EnableClipSplit.
"EnableClipSplit": false, // Whether to use AI clip segmentation. If true, SingleShotDuration is ignored.
"AllowVfxEffect": false, // Whether to add special effects.
"AllowTransition": false, // Whether to add transitions.
"AllowDuplicateMatch": false // In image-text matching mode, whether to allow reuse of matched clips.
}
}
TemplateConfig
TemplateConfig contient les paramètres communs pour la production vidéo par lots. Pour obtenir les paramètres détaillés et des exemples, consultez TemplateConfig.
OutputConfig
OutputConfig spécifie la destination de sortie, le nommage, la résolution et le nombre de vidéos.
Les paramètres s'appliquent aux deux modes de génération.
|
Parameter |
Type |
Description |
Example |
Required |
|
MediaURL |
String |
L'URL de la vidéo de sortie, qui doit inclure l'espace réservé |
Format : http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name]_{index}.mp4 Exemple : http://example.oss-cn-shanghai.aliyuncs.com/example/example_{index}.mp4 |
Obligatoire si GeneratePreviewOnly est false et que la sortie est dirigée vers OSS. |
|
StorageLocation |
String |
L'emplacement de stockage des éléments multimédias envoyés vers ApsaraVideo VOD. |
Format : [your-vod-bucket].oss-[your-region-id].aliyuncs.com Exemple : outin-**6c886b4549d481030f6e**.oss-cn-shanghai.aliyuncs.com |
Obligatoire si GeneratePreviewOnly est false et que la sortie est dirigée vers VOD. |
|
FileName |
String |
Le nom du fichier de sortie, qui doit inclure l'espace réservé |
Format : [your-file-name]__{index}.mp4 Exemple : example_{index}.mp4 |
Obligatoire si GeneratePreviewOnly est false et que la sortie est dirigée vers VOD. |
|
GeneratePreviewOnly |
Boolean |
|
false |
Non. Valeur par défaut : false. |
|
Count |
Integer |
Le nombre de vidéos à générer en sortie.
|
10 |
Non. Valeur par défaut : 1. |
|
MaxDuration |
Float |
La durée maximale de chaque vidéo de sortie, en secondes. Si un paramètre Si aucun paramètre |
20 |
Non. Valeur par défaut : 15. |
|
FixedDuration |
Float |
La durée fixe de chaque vidéo de sortie. Si ce paramètre est défini, la durée de la vidéo sera ajustée pour correspondre à cette valeur. Remarque :
|
20 |
Non. Valeur par défaut : 15. |
|
Width |
Integer |
La largeur de la vidéo de sortie en pixels. |
1080 |
Oui |
|
Height |
Integer |
La hauteur de la vidéo de sortie en pixels. |
1920 |
Oui |
|
JSONObject |
Configuration du flux vidéo de sortie, telle que CRF et le codec. |
{"Crf": 27} |
Non |
Exemple
{
"MediaURL": "http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name]_{index}.mp4",
"Count": 1,
"MaxDuration": 15,
"Width": 1080,
"Height": 1920,
"Video": {"Crf": 27},
"GeneratePreviewOnly":false
}
Exemples SDK
Prérequis
Vous avez installé le SDK serveur IMS. Pour plus d'informations, consultez Premiers pas.
Exemple de code
Cet exemple utilise le mode Scripts globaux.
Paramètres d'entrée de l'API
Logique de traitement et configuration avancée
Logique de traitement
Mode Script global :
Si des éléments vidéo sont sélectionnés dans la bibliothèque de recherche à partir d'un texte descriptif, ce texte sert de requête pour identifier intelligemment les extraits vidéo correspondants.
Si une vidéo longue est fournie en entrée, elle est d'abord découpée en plans plus courts. La vidéo finale combine ces plans. La durée par défaut de chaque plan est de 3 secondes ; vous pouvez la personnaliser à l'aide du paramètre SingleShotDuration.
En l'absence de voix off, le système sélectionne et assemble aléatoirement des extraits vidéo pour générer une vidéo d'environ 15 secondes.
Si une voix off est fournie, le système associe intelligemment les visuels au texte et les synchronise avec la narration afin de produire plusieurs vidéos par lot.
Mode Script de storyboard :
Lorsque des éléments vidéo sont sélectionnés dans la bibliothèque de recherche à partir d'un texte descriptif, celui-ci permet de rechercher et d'extraire intelligemment les extraits vidéo pertinents.
Dans ce mode, ne définissez pas
SpeechTextArray. Contrôlez le contenu, la durée et la voix off de chaque scène viaSceneInfo.ShotInfo.ShotScripts.Au sein d'une même scène, le système tente d'abord d'associer et de recadrer les extraits en fonction du
ScriptText. Si leScriptTextn'est pas renseigné mais que leSpeechTextl'est, l'association se base sur la voix off.La durée d'une scène est synchronisée soit avec la longueur de la voix off, soit avec une durée personnalisée.
Configuration avancée
Pour les paramètres avancés, consultez la rubrique Logique et configurations avancées pour la création vidéo en un clic par lot.
Références
SubmitBatchMediaProducingJob : soumet une tâche de production vidéo par lot.
GetBatchMediaProducingJob : récupère les détails d'une tâche de production vidéo par lot.
SubmitMediaProducingJob : soumet une tâche de montage vidéo.