Questions fréquentes sur le traitement des médias, la gestion de la synchronisation et la génération vidéo par Script-to-Video.
Logique de traitement
Comment fonctionne le mode Global Scripts ?
Les vidéos d'entrée longues sont d'abord découpées en segments plus courts. Lors de la composition, le système respecte l'ordre des groupes, sélectionne aléatoirement un segment par groupe, puis les concatène pour former la vidéo finale. Le paramètre SingleShotDuration détermine la durée de chaque segment après découpage.
Si vous fournissez des scripts de voix off globaux, le système les répartit sans répétition tant que leur nombre est suffisant. Par exemple, avec 3 scripts pour générer 5 vidéos, chacun des 3 scripts est utilisé au moins une fois ; certains sont réutilisés pour compléter les vidéos restantes.
Lorsqu'une voix off globale est fournie et que la vidéo assemblée est plus courte que cette voix off, le système sélectionne aléatoirement des segments supplémentaires dans les groupes intermédiaires (hors début et fin) jusqu'à ce que la durée de la vidéo corresponde à celle de la voix off.
-
La durée finale de la vidéo suit cet ordre de priorité :
En présence d'un script de voix off globale, la durée finale correspond à la durée de la voix off.
-
En l'absence de script de voix off globale :
Si FixedDuration est défini, la durée finale équivaut à la valeur de FixedDuration.
Si MaxDuration est défini, la durée finale correspond à
SingleShotDurationmultipliée par le nombre de groupes (longueur deSpeechTextArray), plafonnée à la valeur de MaxDuration.
Comment fonctionne le mode Segmented Scripts ?
Dans ce mode, configurez les scripts de voix off au sein de chaque MediaGroup via le champ
SpeechTextArray. Comme pour le mode Global Scripts, les vidéos d'entrée longues sont d'abord découpées en segments. Ne définissez pasInputConfig.SpeechTextni de tableau globalSpeechTextArray, sous peine de provoquer une erreur.Si le tableau
MediaGroup.SpeechTextArrayd'un groupe est vide, ce groupe n'a pas de voix off. Sa durée par défaut est alors fixée à 5 secondes et contrôlée parMediaGroup.Duration.Pour ajuster le volume audio des ressources d'une MediaGroup spécifique, définissez MediaGroup.Volume. Ce paramètre prévaut sur EditingConfig.MediaConfig.Volume.
Chaque groupe peut contenir plusieurs scripts de voix off. Si tous les groupes dotés de voix off possèdent le même nombre de scripts, ceux-ci sont combinés séquentiellement : tous les groupes utilisent simultanément leur Nième script. En revanche, si le nombre de scripts varie entre les groupes, le système sélectionne aléatoirement un segment par groupe pour constituer la voix off complète.
Optimisation des résultats
Comment corriger des changements de scène trop brusques ou trop fréquents ?
Utilisez la fonctionnalité d'analyse de plans du Smart Tagging pour découper automatiquement vos médias en plans pertinents. Cela évite au système de couper au milieu de scènes naturelles et garantit des transitions plus fluides. Les étapes suivantes s'appliquent à une seule ressource vidéo ; répétez-les pour chaque ressource supplémentaire.
Pour la ressource vidéo, appelez l'API SubmitSmarttagJob. Définissez
TemplateIdsur la valeur fixe « S00000103-000003 ».-
Récupérez les résultats de l'analyse de plans en appelant QuerySmarttagJobI. Dans la réponse, localisez l'entrée
dataoùtype=ClipSplit. La valeur est un tableau JSON dans lequelStartTimeetEndTimeindiquent les limites de chaque plan en secondes :[ { "EndTime": 5.4, "ClipType": "opening", "StartTime": 0.0 }, { "EndTime": 9.16, "ClipType": "opening", "StartTime": 5.4 }, { "EndTime": 12.88, "ClipType": "opening", "StartTime": 9.16 }, { "EndTime": 16.0, "ClipType": "opening", "StartTime": 12.88 } ] -
Transmettez les limites de plans obtenues à l'étape 2 au paramètre EditingConfig.MediaConfig.MediaMetaDataArray.TimeRangeList de votre tâche Script-to-Video. Chaque paire
In/Outcorrespond à un plan issu du résultatClipSplit:{ "MediaConfig": { "MediaMetaDataArray": [ { "Media": "https://******.****.****/public-template/video/movie_apsara_4.mp4", "GroupName": "opening", "TimeRangeList": [ { "In": 0, "Out": 5.4 }, { "In": 5.4, "Out": 9.16 }, { "In": 9.16, "Out": 12.88 }, { "In": 12.88, "Out": 16.0 } ] } ] } } Définissez MediaGroup.SplitMode sur
NoSplitpour laMediaGroupcorrespondante. Ainsi, le système ne redécoupe pas les clips déjà segmentés, ce qui préserve l'intégrité des plans et assure des transitions plus fluides.
Comment contrôler le rythme des changements de scène et la durée des plans ?
Utilisez ces deux paramètres selon le type de ressource :
Pour les images : utilisez ImageDuration afin de définir la durée d'affichage de chaque image dans la vidéo de sortie.
Pour les vidéos : recourez au paramètre SingleShotDuration pour maîtriser la durée des segments issus du découpage d'une ressource vidéo.
Comment la durée d'affichage d'une image est-elle calculée dans la vidéo finale ?
Lorsqu'un groupe de médias contient à la fois des images et des vidéos, et qu'une image est sélectionnée, sa durée d'affichage est déterminée selon l'ordre de priorité suivant :
Si ImageDuration est défini, cette valeur s'applique.
Si une voix off est fournie, la durée de l'image correspond à la durée totale de la voix off divisée par le nombre d'éléments dans MediaGroupArray.
Si FixedDuration est défini mais qu'aucune voix off n'est fournie, la durée de l'image équivaut à FixedDuration divisée par le nombre d'éléments dans MediaGroupArray.
Comment garantir la lecture intégrale d'un clip vidéo dans la vidéo finale ?
Définissez MediaGroup.SplitMode du groupe sur
NoSplitet attribuez àMediaGroup.Durationla durée exacte du clip source. Par exemple, pour lire intégralement un clip de 20 secondes, réglezMediaGroup.SplitModesurNoSplitetMediaGroup.Durationsur 20.Si la ressource sélectionnée est plus courte que la valeur spécifiée dans
MediaGroup.Duration, le système ajuste la vitesse de lecture pour s'y conformer. Ainsi, siMediaGroup.Durationest fixé à 10 secondes alors qu'un clip de 20 secondes est sélectionné, ce dernier sera lu à une vitesse de 2x.
Comment alterner entre des clips avec audio original et des clips avec narration en voix off ?
Recourez à MediaGroup.Volume pour gérer le volume des ressources au sein de chaque groupe de médias. Attribuez la valeur 1 pour conserver l'audio original du clip, ou 0 pour le couper et laisser place à la voix off.
Prenons l'exemple de trois groupes — MediaGroup1, MediaGroup2 et MediaGroup3 — où MediaGroup1 et MediaGroup3 disposent de voix off tandis que MediaGroup2 conserve son audio original. Configurez alors
MediaGroupArraycomme suit :
[{
"GroupName": "MediaGroup1",
"MediaArray": ["https://ice-*****-test.oss-cn-*****.aliyuncs.com/0-test-batch-editing-materials/160134%2B9859695-2032aa5c-2803-47cd-bf65-8a40d66598db.png", "https://ice-auto-test.oss-cn-shanghai.aliyuncs.com/0-test-batch-editing-materials/cloud.mp4"],
"SpeechTextArray": ["Grand opening! A Freshippo store opens today at the nearby mall.", "A Freshippo store opens today at the nearby mall", "<speak>The battle is <phoneme alphabet=\"py\" ph=\"zheng4 hao3\">fierce</phoneme>. The table tennis legend Ma Long, is charging towards the pinnacle of glory. In the quarter-finals against Togami Shunsuke, Ma Long shows no fear, giving his all in every rally. His precise ball placement and calm judgment give him the upper hand in this match. In the end, Ma Long defeats his opponent and advances to the semi-finals.</speak>"]
},
{
"GroupName": "MediaGroup2",
"MediaArray": ["https://ice-*****-test.oss-cn-*****.aliyuncs.com/0-test-batch-editing-materials/normal%20video.mp4", "https://ice-auto-test.oss-cn-shanghai.aliyuncs.com/0-test-batch-editing-materials/3.jpeg"],
"Duration": 5,
"SplitMode": "NoSplit",
"Volume": 1
},
{
"GroupName": "MediaGroup3",
"MediaArray": ["https://ice-*****-test.oss-cn-*****.aliyuncs.com/0-test-batch-editing-materials/young_sunset_walk.mp4"],
"SpeechTextArray": ["Come and take a look", "Come and take a look now"]
}]