Conheça os parâmetros de produção, as configurações avançadas e os exemplos de SDK do Script-to-Video.
Tanto o Script-to-Video quanto o Image-Text Matching usam a API SubmitBatchMediaProducingJob para enviar uma tarefa. Para diferenciá-los com base nos parâmetros, consulte Parameter differences.
Nesta API, a região especificada na URL do OSS de todos os ativos de mídia deve ser idêntica ao endpoint do service OpenAPI.
Regiões suportadas: China (Shanghai), China (Beijing), China (Hangzhou), China (Shenzhen), US (Silicon Valley) e Singapore.
Na prática, substitua todos os espaços reservados nos exemplos, como [your-bucket], [your-region-id], [your-file-name], [your-file-path] e IDs de ativos de mídia ("**9d46c8b4548681030f6e**"), pelos seus valores reais.
Para compreender melhor este documento, leia primeiro o guia Batch video production e familiarize-se com os conceitos e o fluxo de trabalho do Script-to-Video.
-
O Script-to-Video oferece dois modos de produção: Global Scripts e Segmented Scripts.
Global Scripts: Combina aleatoriamente vários roteiros completos de narração com ativos de vídeo para gerar um grande volume de vídeos com estilo semelhante.
Segmented Scripts: Divide um roteiro de narração em múltiplos segmentos e associa cada segmento a um grupo específico de ativos.
-
A definição do modo segue a lógica de parâmetros abaixo:
Se SpeechTextArray não estiver vazio, o sistema considera o modo Global Scripts.
Caso SpeechTextArray esteja vazio e pelo menos um MediaGroup.Duration ou MediaGroup.SpeechTextArray no MediaGroupArray não esteja vazio, o modo aplicado será Segmented Scripts.
Quando SpeechTextArray está vazio e todos os valores de MediaGroup.Duration e MediaGroup.SpeechTextArray no MediaGroupArray também estão vazios, trata-se do modo Global Scripts.
Observações de uso
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 define os ativos básicos: clipes de vídeo, narrações, músicas de fundo e adesivos.
Parameter | Type | Description | Example | Required | Supported modes |
MediaGroupArray | List<MediaGroup> | Especifica os ativos de source. Suporta agrupamento de ativos. Nome do grupo: Até 50 caracteres. Não suporta emojis. Lista de materiais: ID do ativo de mídia ou URL do OSS do material. Suporta no máximo 40 grupos, cada um contendo até 200 materiais. Se você adicionar vários materiais ao mesmo grupo, o sistema selecionará aleatoriamente um para cada trabalho de produção. Para utilizar múltiplos materiais, crie grupos separados e adicione um material a cada grupo. | Yes |
| |
TitleArray | List<String> | Um array de títulos. O sistema seleciona aleatoriamente um título para cada produção. Máximo de 50 títulos, cada um com até 50 caracteres. | ["Title 1","Title 2"] | No |
|
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"]}] | No |
|
SpeechTextArray | List<String> |
| ["Voiceover content 1","Voiceover content 2"] | No |
|
StickerArray | List<Sticker> |
| [{"MediaId":"**9d46c8b4548681030f6e**","X":10,"Y":100,"Width":300,"Height":300,"Opacity":0,6}] | No |
|
BackgroundMusicArray | List<String> |
| ["**b4549d46c88681030f6e","549d46c88b4681030f6e**"] | No |
|
BackgroundImageArray | List<String> |
| ["**b4549d46c88681030f6e","549d46c88b4681030f6e**"] | No |
|
MediaGroup
As diferenças de parâmetros do MediaGroup entre Global Scripts e Segmented Scripts aparecem na coluna Supported modes.
Parameter | Type | Description | Example | Required | Supported modes |
GroupName | String | Nome do grupo. Máximo de 50 caracteres, sem emojis. | Group1 | Yes |
|
MediaArray | List<String> |
| **b4549d46c88681030f6e** | Yes |
|
SpeechTextArray | List<String> |
| ["Voiceover content 1","Voiceover content 2"] | No |
|
Duration | Float | Duração do grupo atual, em segundos. Utilize apenas quando | 10 | No. Default: 5. |
|
SplitMode | String |
| NoSplit | No. Default: AverageSplit. |
|
Volume | Float |
| 0,5 | No |
|
DurationAutoAdapt | Boolean | Indica se a adaptação automática de duração deve ser ativada para este grupo. Quando ativado e não há narração, o sistema ajusta a duração do grupo para garantir que os clipes de vídeo sejam reproduzidos na velocidade original. | true | No. Default: false. |
|
Exemplo: Modo Global Scripts
{
"MediaGroupArray": [
{
"GroupName": "UseMediaId",
"MediaArray": [
"****9d46c886b45481030f6e****",
"****c886810b4549d4630f6e****"
],
"SplitMode": "NoSplit"
},
{
"GroupName": "UseOssUrl",
"MediaArray": [
"http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].mp4",
"http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].png"
]
}
],
"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>"
],
"StickerArray": [
{
"MediaId": "****9d46c8b4548681030f6e****",
"X": 10,
"Y": 100,
"Width": 300,
"Height": 300,
"Opacity": 0.6
},
{
"MediaURL": "http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].png",
"X": 10,
"Y": 100,
"Width": 300,
"Height": 300
}
],
"BackgroundMusicArray": [
"****b4549d46c88681030f6e****",
"****549d46c88b4681030f6e****",
"http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].mp3"
],
"BackgroundImageArray": [
"****6c886b4549d481030f6e****",
"****9d46c8548b4681030f6e****",
"http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].png"
]
}
Exemplo: Segmented Scripts
{
"MediaGroupArray": [{
"GroupName": "start",
"MediaArray": ["https://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].jpeg", "https://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].mp4"],
"Duration": 5,
"SplitMode": "NoSplit",
"Volume": 1
},
{
"GroupName": "group1",
"MediaArray": ["https://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].png", "https://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].mp4"],
"SpeechTextArray": ["A new Freshippo store just opened in the nearby mall.", "It's the grand opening today.", "<speak>Today, our hero, table tennis legend <phoneme alphabet="ipa" ph="mɑː lʊŋ">Ma Long</phoneme>, is striving for the pinnacle of glory.</speak>"]
},
{
"GroupName": "group2",
"MediaArray": ["https://[your-bucket].oss-[your-region-id].aliyuncs.com/0-test-batch-editing-materials/normal%20video.mp4", "https://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].jpeg"],
"SpeechTextArray": ["The store isn't huge, but it's packed with people. Snacks and drinks are pretty cheap, and the checkout lines are super long.", "The scene is very lively, with crowds of people and a wide variety of goods."]
},
{
"GroupName": "group3",
"MediaArray": ["https://[your-bucket].oss-[your-region-id].aliyuncs.com/0-test-batch-editing-materials/young_sunset_walk.mp4"],
"SpeechTextArray": ["Come and see for yourself!", "Hurry and come take a look!"]
},
{
"GroupName": "end",
"MediaArray": ["https://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].jpg", "https://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].mp4"],
"Duration": 5
}
],
"TitleArray": [
"Freshippo opens a new location in Huilongguan",
"A new Freshippo store opens"
],
"StickerArray": [
{
"MediaId": "****9d46c8b4548681030f6e****",
"X": 10,
"Y": 100,
"Width": 300,
"Height": 300,
"Opacity": 0.6
},
{
"MediaURL": "http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].png",
"X": 10,
"Y": 100,
"Width": 300,
"Height": 300
}
],
"SubHeadingArray": [
{
"Level": 1,
"TitleArray": ["Level 1 subtitle 1", "Level 1 subtitle 2"]
},
{
"Level": 3,
"TitleArray": ["Level 3 subtitle"]
}
],
"BackgroundMusicArray": [
"****b4549d46c88681030f6e****",
"****549d46c88b4681030f6e****",
"http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].mp3"
],
"BackgroundImageArray": [
"****6c886b4549d481030f6e****",
"****9d46c8548b4681030f6e****",
"http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name].png"
]
}
EditingConfig
O EditingConfig define volume, posicionamento e outras configurações de produção.
Todos os parâmetros suportam os modos Global Scripts e Segmented Scripts, exceto:
ProcessConfig.AlignmentMode tem efeito apenas no modo Global Scripts.
SpeechConfig.SpecialWordsConfig tem efeito apenas no modo Segmented Scripts.
Parameter | Type | Description | Example | Required |
JSON | Configuração dos ativos de vídeo de entrada. | {"Volume":"1","MediaMetaDataArray":[{"Media":"**6c886b4549d481030f6e**","GroupName":"GroupA","TimeRangeList":[{"In":"0","Out":"1"},{"In":"2","Out":"3"}]}]} | No | |
JSON | Configuração para títulos. | {"Alignment":"TopCenter","AdaptMode":"AutoWrap","Font":"Alibaba PuHuiTi 2.0 95 ExtraBold","SizeRequestType":"Nominal","Y":0,1} | No | |
SubHeadingConfig | JSON | Configuração para subtítulos multiníveis. Campos JSON:
| {"1":{"Y":0,3,"FontSize":40},"3":{"Y":0,5,"FontSize":30}} | No |
JSON | Configuração da narração. | Consulte EditingConfig parameter examples | No | |
JSON | Configuração da música de fundo. | {"Volume":0,2} | No | |
JSON | Configuração da imagem de fundo. Ignorado se uma imagem de fundo for definida no InputConfig. | {"SubType":"Blur","Radius":0,5} | No | |
JSON | Configuração do processo de mixagem e edição. | Consulte EditingConfig parameter examples | No | |
JSON | Configuração da tela para visualização no front-end. | {"Width": 1080,"Height": 1920} | No | |
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":"**d54a97cff4108b555b01166d4**","MaxBitrate":5000,"KeepOriginMaxBitrate":false,"KeepOriginVideoMaxFps":false} | No |
ProcessConfig
Parameter | Type | Description | Example | Required |
SingleShotDuration | Float | Duração de cada plano segmentado automaticamente ao dividir ativos de vídeo longos, em segundos. | 5 | No. Default: 3. |
AllowVfxEffect | Boolean | Indica se efeitos especiais devem ser adicionados. | true | No. Default: false. |
VfxEffectProbability | Float | Probabilidade de aplicar um efeito a cada clipe. Intervalo: 0,0–1,0. Suporta 2 casas decimais. | 0,6 | No. Default: 0,5. |
VfxFirstClipEffectList | List<String> |
| ["slightshow","starfieldshinee"] | No |
VfxNotFirstClipEffectList | List<String> |
| ["zoomslight","zoom"] | No |
AllowTransition | Boolean | Indica se efeitos de transição devem ser adicionados. | true | No. Default: false. |
TransitionDuration | Float | Duração das transições em segundos. Se | 0,5 | No. Default: 0,5. |
TransitionList | List<String> | Uma lista de transições personalizadas. Se | ["directional", "linearblur"] | No |
UseUniformTransition | Boolean | Indica se a mesma transição deve ser usada em todo o vídeo. | true | No. Default: true. |
AllowFilter | Boolean | Indica se filtros personalizados devem ser adicionados. | false | No. Default: false. |
FilterList | List<String> | Uma lista de filtros personalizados. Se | ["m1", "m2"] | No |
AlignmentMode | String | Modo de alinhamento para vídeo e narração. Efetivo apenas no modo Global Scripts. Valores válidos:
| AutoSpeed | No. Default: AutoSpeed. |
ImageDuration | Float | Duração dos ativos de imagem estática, em segundos. | 2 | No. Default: 2. |
Exemplo de parâmetro
{
"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
},
"SubHeadingConfig": {
"1": {
"Y": 0.3,
"FontSize": 40
},
"3": {
"Y": 0.5,
"FontSize": 30
}
},
"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
},
"SpecialWordsConfig": [{
"Type": "Highlight",
"Style": {
"FontName": "KaiTi",
"FontSize": 80,
"FontColor": "20AEE9",
"OutlineColour": "2D20E9",
"Outline": 3,
"FontFace": {
"Bold": true,
"Underline": true
}
},
"WordsList": [
"ApsaraVideo",
"Intelligent Media Services",
"Batch video creation"
]
},
{
"Type": "Highlight",
"Style": {
"FontFace": {
"Italic": true
}
},
"WordsList": [
"product",
"take a look"
]
},
{
"Type": "Forbidden",
"WordsList": [
"pilipala",
"bilibala"
],
"SoundReplaceMode": "None"
}
]},
"BackgroundMusicConfig": {
"Volume": 0.2, // Background music at 20% volume by default
"Style": null
},
"ProcessConfig": {
"SingleShotDuration": 3, // Duration of a shot after splitting
"AllowVfxEffect": false, // Specifies whether to add special effects
"AllowTransition": false, // Specifies whether to add transition effects
"AlignmentMode": "AutoSpeed" // This field is supported only in Global Scripts mode
}
}
TemplateConfig
O TemplateConfig contém parâmetros comuns para produção de vídeo em lote. Para parâmetros detalhados e exemplos, consulte TemplateConfig.
Parâmetros do OutputConfig
O OutputConfig especifica o destino de saída, convenções de nomenclatura, resolução e quantidade de vídeos.
Os parâmetros aplicam-se a ambos os modos.
Parameter | Type | Description | Example | Required |
MediaURL | String | URL do vídeo de saída. Deve incluir o espaço reservado | Rule: http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name]_{index}.mp4 Example: http://example.oss-cn-shanghai.aliyuncs.com/example/example_{index}.mp4 | Required if GeneratePreviewOnly is false and output is to OSS. |
StorageLocation | String | Local de armazenamento para ativos de mídia enviados ao ApsaraVideo VOD. | Rule: [your-vod-bucket].oss-[your-region-id].aliyuncs.com Example: outin-**6c886b4549d481030f6e**.oss-cn-shanghai.aliyuncs.com | Required if GeneratePreviewOnly is false and output is to VOD. |
FileName | String | Nome do arquivo de saída. Deve incluir o espaço reservado | Rule: [your-file-name]__{index}.mp4 Example: example_{index}.mp4 | Required if GeneratePreviewOnly is false and output is to VOD. |
GeneratePreviewOnly | Boolean |
| false | No. Default: false. |
Count | Integer | Número de vídeos a serem gerados. Máximo: 100. | 10 | No. Default: 1. |
MaxDuration | Float | Duração máxima por vídeo de saída, em segundos.
| 20 | No. Default: 15. |
FixedDuration | Float | Duração fixa por vídeo de saída. Se definido, a duração do vídeo se ajusta a este valor.
| 20 | No. Default: 15. |
Width | Integer | Largura do vídeo de saída, em pixels. | 1080 | Yes |
Height | Integer | Altura do vídeo de saída, em pixels. | 1920 | Yes |
JSON | Configuração do stream de vídeo de saída (CRF, codec, etc.). | {"Crf": 27} | No |
Exemplo de parâmetro
{
"MediaURL": "http://[your-bucket].oss-[your-region-id].aliyuncs.com/[your-file-path]/[your-file-name]_{index}.mp4",
"Count": 20,
"MaxDuration": 15,
"Width": 1080,
"Height": 1920,
"Video": {"Crf": 27},
"GeneratePreviewOnly":false
}
Aplicação
Exemplo 1: Configurar introdução e encerramento com o modo Segmented Scripts
Caso de uso
Adicione uma introdução e um encerramento consistentes definindo MediaGroup.SplitMode como NoSplit para o primeiro e o último grupos; assim, o sistema reproduz integralmente um ativo selecionado aleatoriamente desses grupos.
Código de exemplo
Exemplo 2: Criar um vídeo de montagem de rostos
Exemplo de SDK
Pré-requisitos
Você instalou o SDK do servidor IMS. Para mais informações, consulte Get started.
Exemplo de código
Este exemplo utiliza o modo Global Scripts.
Parâmetros de entrada da API
Configurações avançadas
Para configurações avançadas, consulte Logic and advanced configurations for batch one-click video creation.
FAQ
Para perguntas frequentes sobre Script-to-Video, consulte FAQ.
How can I control the pacing of scene changes and shot durations?
How is the display duration of an image calculated in the final video?
How can I ensure a video clip plays in its entirety in the final video?
How can I alternate between video clips with original audio and clips with voice-over narration?
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.