Parâmetros de produção, configurações avançadas e exemplos de SDK para Correspondência de Imagem-Texto em cenários comuns.
Tanto Script-to-Video quanto Correspondência de Imagem-Texto utilizam a API SubmitBatchMediaProducingJob para enviar uma tarefa. Para diferenciá-los com base nos parâmetros, consulte Diferenças de parâmetros.
Nesta API, a região especificada na URL do OSS de todos os ativos de mídia deve ser idêntica ao endpoint do serviço OpenAPI.
Regiões suportadas: China (Shanghai), China (Beijing), China (Hangzhou), China (Shenzhen), EUA (Silicon Valley) e Singapura.
Substitua todos os placeholders nos exemplos ([your-bucket], [your-region-id], [your-file-name], [your-file-path] e IDs de ativos de mídia) pelos seus valores reais.
Para compreender melhor este documento, leia primeiro o guia de Produção de vídeo em lote e familiarize-se com os conceitos e o fluxo de trabalho dos cenários comuns de Correspondência de Imagem-Texto.
-
A Correspondência de Imagem-Texto oferece dois modos de geração de vídeo:
Global Scripts
Storyboard Script
Referência da API
Para enviar um trabalho de produção de vídeo em lote que mistura inteligentemente vários ativos de vídeo, áudio e imagem, consulte SubmitBatchMediaProducingJob. Os principais parâmetros da API estão detalhados nas seções
InputConfig,EditingConfigeOutputConfigabaixo.Para obter informações detalhadas sobre um trabalho de criação de vídeo em lote, consulte GetBatchMediaProducingJob.
InputConfig
O InputConfig especifica parâmetros para clipes de vídeo, narrações, música de fundo e adesivos.
|
Parâmetro |
Tipo |
Descrição |
Exemplo |
Obrigatório |
Modes suportados |
|
MediaArray |
List<String> |
|
["**b4549d46c88681030f6e","549d46c88b4681030f6e**"] |
MediaArray ou MediaSearchInput é obrigatório |
Ambos |
|
MediaSearchInput |
Busca inteligentemente por ativos correspondentes ao especificar uma biblioteca de pesquisa e texto descritivo. |
{"LibSearchCondition":{"SearchLibs":["ims-default-search-lib","test-20"],"SearchText":"Alibaba Cloud assistant is learning how to livestream"}} |
Ambos |
||
|
TitleArray |
List<String> |
Um array de títulos. Um título é selecionado aleatoriamente para cada produção. Máximo de 50 títulos, cada um com até 50 caracteres. |
["Title 1","Title 2"] |
Não |
Ambos |
|
SubHeadingArray |
List<SubHeading> |
Configurações de subtítulos multiníveis. |
[{"Level":1,"TitleArray":["Level 1 subtitle 1","Level 1 subtitle 2"]},{"Level":3,"TitleArray":["Level 3 subtitle"]}] |
Não |
Ambos |
|
SpeechTextArray |
List<String> |
|
["Voiceover content 1","Voiceover content 2"] |
Não |
Global Scripts |
|
SceneInfo |
Parâmetros de configuração de cena. |
Sim |
Storyboard Script |
||
|
StickerArray |
List<Sticker> |
|
[{"MediaId":"**9d46c8b4548681030f6e**","X":10,"Y":100,"Width":300,"Height":300,"Opacity":0,6}] |
Não |
Ambos |
|
BackgroundMusicArray |
List<String> |
|
["**b4549d46c88681030f6e","549d46c88b4681030f6e**"] |
Não |
Ambos |
|
BackgroundImageArray |
List<String> |
|
["**b4549d46c88681030f6e","549d46c88b4681030f6e**"] |
Não |
Ambos |
MediaSearchInput
|
Parâmetro |
Tipo |
Descrição |
Obrigatório |
|
LibSearchCondition |
Configuração para condições da biblioteca de pesquisa. |
Obrigatório |
LibSearchCondition
|
Parâmetro |
Tipo |
Descrição |
Exemplo |
Obrigatório |
|
SearchLibs |
List<String> |
Uma lista de bibliotecas de pesquisa. |
["ims-default-search-lib"] |
Sim |
|
SearchText |
String |
Texto descritivo para correspondência de ativos. Máximo de 20 caracteres. |
Ocean, coral reef, seals, dolphins, marine environment |
Sim |
SceneInfo
|
Parâmetro |
Tipo |
Descrição |
Obrigatório |
|
Scene |
String |
O tipo de cena correspondente. Para cenários comuns, defina como |
Sim |
|
ShotInfo |
Configuração para o storyboard. Nota
Este parâmetro aplica-se apenas ao modo Storyboard Script. |
Não |
ShotInfo
Este parâmetro aplica-se apenas ao modo Storyboard Script.
|
Parâmetro |
Tipo |
Descrição |
Obrigatório |
|
ShotScripts |
List<ShotScript> |
Um array de roteiros de storyboard. |
Sim |
ShotScript
Este parâmetro aplica-se apenas ao modo Storyboard Script.
|
Parâmetro |
Tipo |
Descrição |
Exemplo |
Obrigatório |
|
ScriptText |
String |
O texto do roteiro para uma única cena, usado para descrever o conteúdo da cena para correspondência visual. |
He is recently developing a new magic potion. |
Não |
|
SpeechText |
String |
|
The old magician Danny is fiddling with strange instruments; he is recently developing a new magic potion. |
Não |
|
Duration |
Float |
|
5 |
Não |
|
Volume |
Float |
|
0,5 |
Não |
Exemplo: Modo Global Scripts
{
// 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"
]
}
Exemplo: Modo 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
O EditingConfig controla títulos, volume, posicionamento e outras configurações de produção. Deixe vazio para usar os padrões.
Os parâmetros são os mesmos para ambos os modos de geração.
|
Parâmetro |
Tipo |
Descrição |
Exemplo |
Obrigatório |
|
JSON |
Configuração para ativos de vídeo de entrada. |
Não |
||
|
JSON |
Configuração para títulos. |
Não |
||
|
SubHeadingConfig |
JSON |
Configuração para subtítulos multiníveis. Campos JSON:
|
Não |
|
|
JSON |
Configuração para a narração. |
Não |
||
|
JSON |
Configuração para música de fundo. |
{"Volume":0,2} |
Não |
|
|
JSON |
Configuração de imagem de fundo. Não tem efeito se uma imagem de fundo for especificada no InputConfig. |
{"SubType":"Blur","Radius":0,5} |
Não |
|
|
JSON |
Configuração para o processo de mixagem e edição. |
Não |
||
|
JSON |
Configuração de canvas para pré-visualização front-end. |
{"Width": 1080,"Height": 1920} |
Não |
|
|
ProduceConfig |
JSON |
Configuração padrão de edição e produção. Para campos, consulte EditingProduceConfig. |
{"AutoRegisterInputVodMedia":true,"OutputWebmTransparentChannel":true,"CoverConfig":{"StartTime":3,3},"AudioChannelCopy":"left","PipelineId":"d54a97cff4108b555b01166d4b","MaxBitrate":5000,"KeepOriginMaxBitrate":false,"KeepOriginVideoMaxFps":false} |
Não |
ProcessConfig
|
Parâmetro |
Tipo |
Descrição |
Exemplo |
Obrigatório |
|
SingleShotDuration |
Float |
Duração de cada plano segmentado (segundos) quando ativos de vídeo longos são divididos. |
5 |
Não. Valor padrão: 3. |
|
EnableClipSplit |
Boolean |
Ativa a segmentação de clipes por IA (divide ativos longos por mudanças de cena). Se verdadeiro, SingleShotDuration é ignorado. |
false |
Não. Valor padrão: false. |
|
AllowVfxEffect |
Boolean |
Indica se efeitos especiais devem ser adicionados. |
true |
Não. Valor padrão: false. |
|
VfxEffectProbability |
Float |
Probabilidade de aplicar um efeito a cada clipe. Faixa: 0,0 a 1,0. Suporta 2 casas decimais. |
0,6 |
Não. Valor padrão: 0,5. |
|
VfxFirstClipEffectList |
List<String> |
|
["slightshow","starfieldshinee"] |
Não |
|
VfxNotFirstClipEffectList |
List<String> |
|
["zoomslight","zoom"] |
Não |
|
AllowTransition |
Boolean |
Indica se efeitos de transição devem ser adicionados. |
true |
Não. Valor padrão: false. |
|
TransitionDuration |
Float |
Duração das transições em segundos. Se |
0,5 |
Não. Valor padrão: 0,5. |
|
TransitionList |
List<String> |
Uma lista de transições personalizadas. Se |
["directional", "linearblur"] |
Não |
|
UseUniformTransition |
Boolean |
Indica se deve ser usada uma transição uniforme em todo o vídeo. |
true |
Não. Valor padrão: true. |
|
AllowFilter |
Boolean |
Indica se filtros personalizados devem ser adicionados. |
false |
Não. Valor padrão: false. |
|
FilterList |
List<String> |
Uma lista de filtros personalizados. Se |
["m1", "m2"] |
Não |
|
AllowDuplicateMatch |
Boolean |
Indica se um clipe correspondente pode ser reutilizado. |
false |
Não. Valor padrão: false. |
|
ImageDuration |
Float |
A duração para ativos de imagem estática, em segundos. |
2 |
Não. Valor padrão: 2. |
Exemplo
Todos os parâmetros do EditingConfig são opcionais. Configuração padrão:
{
"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
O TemplateConfig contém parâmetros comuns para produção de vídeo em lote. Para parâmetros detalhados e exemplos, consulte TemplateConfig.
OutputConfig
O OutputConfig especifica o destino de saída, nomenclatura, resolução e quantidade de vídeos.
Os parâmetros aplicam-se a ambos os modos de geração.
|
Parâmetro |
Tipo |
Descrição |
Exemplo |
Obrigatório |
|
MediaURL |
String |
A URL do vídeo de saída, que deve incluir o placeholder |
Formato: http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name]_{index}.mp4 Exemplo: http://example.oss-cn-shanghai.aliyuncs.com/example/example_{index}.mp4 |
Obrigatório se GeneratePreviewOnly for falso e a saída for para o OSS. |
|
StorageLocation |
String |
O local de armazenamento para ativos de mídia enviados ao ApsaraVideo VOD. |
Formato: [your-vod-bucket].oss-[your-region-id].aliyuncs.com Exemplo: outin-**6c886b4549d481030f6e**.oss-cn-shanghai.aliyuncs.com |
Obrigatório se GeneratePreviewOnly for falso e a saída for para o VOD. |
|
FileName |
String |
O nome do arquivo de saída, que deve incluir o placeholder |
Formato: [your-file-name]__{index}.mp4 Exemplo: example_{index}.mp4 |
Obrigatório se GeneratePreviewOnly for falso e a saída for para o VOD. |
|
GeneratePreviewOnly |
Boolean |
|
false |
Não. Valor padrão: false. |
|
Count |
Integer |
A quantidade de vídeos a serem gerados.
|
10 |
Não. Valor padrão: 1. |
|
MaxDuration |
Float |
A duração máxima para cada vídeo de saída, em segundos. Se um Se nenhum |
20 |
Não. Valor padrão: 15. |
|
FixedDuration |
Float |
A duração fixa para cada vídeo de saída. Se definido, a duração do vídeo será ajustada para corresponder a este valor. Observação:
|
20 |
Não. Valor padrão: 15. |
|
Width |
Integer |
A largura do vídeo de saída em pixels. |
1080 |
Sim |
|
Height |
Integer |
A altura do vídeo de saída em pixels. |
1920 |
Sim |
|
JSONObject |
Configuração para o fluxo de vídeo de saída, como CRF e codec. |
{"Crf": 27} |
Não |
Exemplo
{
"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
}
Exemplos de SDK
Pré-requisitos
Instale o SDK do servidor IMS. Para mais informações, consulte Introdução.
Exemplo de código
Este exemplo utiliza o modo Global Scripts.
Parâmetros de entrada da API
Lógica de edição e configuração avançada
Lógica de processamento
Modo Global Scripts:
Se os ativos de vídeo forem selecionados da biblioteca de pesquisa com base em texto descritivo, o texto será usado como consulta para encontrar inteligentemente clipes de vídeo correspondentes.
Caso um vídeo longo seja fornecido como entrada, ele será primeiramente segmentado em planos mais curtos. O vídeo final será uma combinação desses planos. A duração padrão para cada plano é de 3 segundos, personalizável através do parâmetro SingleShotDuration.
Na ausência de narração, o sistema seleciona e une clipes de vídeo aleatoriamente para criar um vídeo de aproximadamente 15 segundos.
Quando uma narração é fornecida, o sistema combina inteligentemente elementos visuais ao texto e os sincroniza com a narração para produzir múltiplos vídeos em lote.
Modo Storyboard Script:
Se os ativos de vídeo forem selecionados da biblioteca de pesquisa com base em texto descritivo, o texto será utilizado para buscar e recuperar inteligentemente clipes de vídeo correspondentes.
Neste modo, não se define
SpeechTextArray. Em vez disso, controle o conteúdo, a duração e a narração de cada cena usandoSceneInfo.ShotInfo.ShotScripts.Dentro de uma única cena, o sistema tenta primeiro corresponder e aparar clipes com base no
ScriptText. Se oScriptTextnão for fornecido, mas oSpeechTextestiver presente, a correspondência baseia-se na narração.A duração de uma cena é sincronizada com o comprimento da narração ou com uma duração personalizada definida.
Configuração avançada
Para configurações avançadas, consulte Lógica e configurações avançadas para criação de vídeo em lote com um clique.
Referências
SubmitBatchMediaProducingJob: envia um trabalho de produção de vídeo em lote.
GetBatchMediaProducingJob: recupera detalhes de um trabalho de produção de vídeo em lote.
SubmitMediaProducingJob: envia um trabalho de edição de vídeo.