Skip to main content

Wan - image-to-video - first frame API reference (2.1-2.6)

O modelo de imagem para vídeo Wan gera um vídeo fluido a partir de uma imagem do primeiro quadro e de um prompt de texto .

Documentos relacionados: Guia do usuário
O Wan 2.7 - imagem para vídeo oferece suporte a conversão do primeiro quadro para vídeo, do primeiro e último quadros para vídeo e continuação de vídeo. Recomendamos esta versão.O recurso de imagem para vídeo (baseado no primeiro quadro) para modelos Wan 2,6 e anteriores suporta apenas a conversão do primeiro quadro para vídeo.

Disponibilidade

O modelo, a URL do endpoint e a chave de API devem estar na mesma região. Chamadas entre regiões falham.
  • Selecione um modelo: Confirme a região onde o modelo está disponível.
  • Selecione uma URL: Escolha a URL do endpoint correspondente à região. Há suporte para URLs HTTP e do DashScope SDK.
  • Configure uma chave de API: Obtenha uma chave de API para a região e, em seguida, configure a chave de API nas variáveis de ambiente.
  • Instale o SDK: Para fazer chamadas com o SDK, instale o DashScope SDK.
O código de exemplo neste tópico destina-se à região de Singapura.
O Model Studio lançou domínios específicos por workspace para as regiões China (Pequim) e Singapura. Os novos domínios dedicados oferecem desempenho superior e maior estabilidade para solicitações de inferência. Recomendamos a migração para os novos domínios:
  • China (Pequim): de https://dashscope.aliyuncs.com para https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com
  • Singapura: de https://dashscope-intl.aliyuncs.com para https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com
O {WorkspaceId} é o ID do seu workspace, disponível na página Workspace Details no console do Model Studio. O domínio existente permanece totalmente funcional.

Chamada HTTP

As tarefas de imagem para vídeo usam invocação assíncrona (geralmente de 1 a 5 minutos): criar tarefa -> consultar resultados.

Etapa 1: Criar uma tarefa

  • Pequim
  • Singapura
  • Virgínia
  • Frankfurt
POST https://dashscope.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis
  • Singapura
  • Virgínia
  • Pequim
  • Frankfurt
POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesisSubstitua WorkspaceId pelo seu ID do Workspace real.
  • Após criar a tarefa, use o task_id retornado para consultar o resultado. O task_id é válido por 24 horas. Não crie tarefas duplicadas. Em vez disso, use consultas periódicas (polling) para recuperar o resultado.
  • Para orientações destinadas a iniciantes, consulte Chamar APIs com Postman ou cURL.

Parâmetros da solicitação

  • Narrativa multi-tomada
  • Dublagem automática
  • Áudio personalizado
  • Vídeo silencioso
  • Prompt negativo
Este recurso é suportado apenas pelos modelos da série Wan2,6.Você pode ativá-lo definindo "prompt_extend": true e "shot_type":"multi".
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
        -H 'X-DashScope-Async: enable' \
        -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
        -H 'Content-Type: application/json' \
        -d '{
        "model": "wan2.6-i2v-flash",
        "input": {
            "prompt": "A scene of urban fantasy art. A dynamic graffiti art character. A boy made of spray paint comes to life from a concrete wall. He raps an English song at high speed while striking a classic, energetic rapper pose. The scene is set under an urban railway bridge at night. The lighting comes from a single street lamp, creating a cinematic atmosphere full of high energy and amazing detail. The audio of the video consists entirely of his rap, with no other dialogue or noise.",
            "img_url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/wpimhv/rap.png",
            "audio_url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/ozwpvi/rap.mp3"
        },
        "parameters": {
            "resolution": "720P",
            "prompt_extend": true,
            "duration": 10,
            "shot_type":"multi"
        }
    }'
Cabeçalhos
Content-Type string (Obrigatório)O tipo de conteúdo da solicitação. Deve ser application/json.
Authorization string (Obrigatório)Autentica a solicitação com uma chave de API do Model Studio. Exemplo: Bearer sk-xxxx.
X-DashScope-Async string (Obrigatório)Ativa o processamento assíncrono. Solicitações HTTP suportam apenas chamadas assíncronas. Deve ser enable.
Se este cabeçalho de solicitação estiver ausente, o erro "current user api does not support synchronous calls" será retornado.
Corpo da solicitação
model string (Obrigatório)Nome do modelo. Modelos disponíveis e preços: preços dos modelos.Exemplo: wan2.6-i2v-flash.
input object (Obrigatório)Campos de entrada, incluindo o prompt.

Propriedades

prompt string (Opcional)Descreve os elementos visuais e características desejados para o vídeo gerado.Suporta chinês e inglês. Cada caractere conta como um. O texto que exceder o limite será truncado. Limites de comprimento por modelo:
  • Modelos das séries Wan2,6 e Wan2,5: Máximo de 1.500 caracteres.
  • Modelos das séries wan2,2 e wan2.1: Máximo de 800 caracteres.
Exemplo: Um gatinho correndo na grama.Dicas para escrita de prompts: Guia de Prompts para Texto para Vídeo/Imagem para Vídeo.negative_prompt string (Opcional)Descreve o que excluir do vídeo, restringindo a saída.Suporta chinês e inglês. Máximo de 500 caracteres; textos mais longos são truncados.Exemplo: baixa resolução, erros, melhor qualidade, baixa qualidade, desfigurado, dedos extras, proporções ruins, etc.img_url string (Obrigatório)A URL ou dados codificados em Base64 da imagem inicial.Restrições de imagem:
  • Formato da imagem: JPEG, JPG, PNG (canal alfa não suportado), BMP ou WEBP.
  • Resolução da imagem: Tanto a largura quanto a altura devem estar dentro de [240, 8000] pixels.
  • Tamanho do arquivo:
    • Modelos das séries Wan2,6 e Wan2,5: Máximo de 20 MB.
    • Modelos das séries wan2,2 e wan2.1: Máximo de 10 MB.
Formatos de entrada suportados:
  1. URL pública:
  2. String de imagem codificada em Base64:
    • Formato de dados: data:{MIME_type};base64,{base64_data}.
    • Exemplo: data:image/png;base64,GDU7MtCZzEbTbmRZ...... (truncado para brevidade).
    • Para detalhes, consulte Imagem de Entrada.
audio_url string (Opcional)Modelos suportados: Séries Wan2,6 e Wan2,5.A URL do arquivo de áudio. O modelo gera o vídeo usando este áudio.Formatos de entrada suportados:
  1. URL pública:
Restrições de áudio:
  • Formato: WAV, MP3.
  • Duração: 3–30s.
  • Tamanho do arquivo: Máximo de 15 MB.
  • Tratamento fora do intervalo: Se a duração do áudio exceder a duration especificada (5 ou 10 segundos), o sistema trunca automaticamente o áudio para os primeiros 5 ou 10 segundos, descartando o restante. Se o áudio for mais curto que a duração do vídeo, o vídeo ficará silencioso após o término do áudio. Por exemplo, se o áudio tiver 3 segundos e a duração do vídeo for de 5 segundos, os primeiros 3 segundos do vídeo de saída terão som e os últimos 2 segundos serão silenciosos.
Exemplo: https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/ozwpvi/rap.mp3.
parameters object (Opcional)Controles para resolução, duração, reescrita inteligente de prompt e marcas d'água.

Propriedades

resolution string (Opcional)
A resolução afeta diretamente o custo. Antes de chamar a API, confirme os preços dos modelos.
Especifica a faixa de resolução do vídeo de saída. O modelo dimensiona a saída para uma contagem total de pixels semelhante com base na faixa selecionada. O modelo mantém a proporção da saída o mais próxima possível da imagem de entrada emimg_url. Para detalhes, consulte as Perguntas frequentes.O valor padrão e os valores de enumeração disponíveis para este parâmetro dependem do parâmetro model, conforme abaixo:
  • wan2.6-i2v-flash: Valores válidos: 720P, 1080P. Valor padrão: 1080P.
  • wan2.6-i2v: Valores válidos: 720P, 1080P. Valor padrão: 1080P.
  • wan2.6-i2v-us: Valores válidos: 720P, 1080P. Valor padrão: 1080P.
  • wan2.5-i2v-preview: Valores válidos: 480P, 720P, 1080P. Valor padrão: 1080P.
  • wan2.2-i2v-flash: Valores válidos: 480P, 720P. Valor padrão: 720P.
  • wan2.2-i2v-plus: Valores válidos: 480P, 1080P. Valor padrão: 1080P.
  • wan2.1-i2v-turbo: Valores válidos: 480P, 720P. Valor padrão: 720P.
  • wan2.1-i2v-plus: Valores válidos: 720P. Valor padrão: 720P.
Exemplo: 1080P.duration integer (Opcional)
A duração afeta diretamente o custo. Antes de chamar a API, confirme os preços dos modelos.
A duração do vídeo de saída, em segundos. Os valores válidos dependem do parâmetro model:
  • wan2.6-i2v-flash: Um inteiro em [2, 15]. Padrão: 5.
  • wan2.6-i2v: Um inteiro em [2, 15]. Padrão: 5.
  • wan2.6-i2v-us: Valores válidos: 5, 10, 15. Padrão: 5.
  • wan2.5-i2v-preview: Valores válidos: 5, 10. Padrão: 5.
  • wan2.2-i2v-plus: Fixo em 5 segundos e não pode ser modificado.
  • wan2.2-i2v-flash: Fixo em 5 segundos e não pode ser modificado.
  • wan2.1-i2v-plus: Fixo em 5 segundos e não pode ser modificado.
  • wan2.1-i2v-turbo: Valores válidos: 3, 4 ou 5. Padrão: 5.
Exemplo: 5.prompt_extend boolean (Opcional)Indica se a reescrita de prompt deve ser ativada. Quando ativado, um LLM reescreve o prompt de entrada. Isso melhora a qualidade da geração para prompts mais curtos, mas aumenta o tempo de processamento.
  • true (padrão)
  • false
Exemplo: true.shot_type string (Opcional)Modelos suportados: Série Wan2,6.Especifica o tipo de tomada do vídeo gerado: uma única tomada contínua ou uma sequência de múltiplas tomadas.Este parâmetro só tem efeito quando "prompt_extend": true.Prioridade do parâmetro: shot_type > prompt. Por exemplo, se shot_type estiver definido como "single", mesmo que o prompt contenha "gerar um vídeo multi-tomada", o modelo ainda produzirá um vídeo de tomada única.Valores válidos:
  • single: Valor padrão. Gera um vídeo de tomada única.
  • multi: Gera um vídeo multi-tomada.
Exemplo: single.
Use este parâmetro quando precisar de controle estrito sobre a estrutura narrativa, como uma única tomada para demonstrações de produtos ou múltiplas tomadas para curtas-metragens.
audio boolean (Opcional)
Isso afeta o custo. Vídeos com som e vídeos silenciosos têm preços diferentes. Verifique os preços no console do Model Studio.
Modelo suportado: wan2.6-i2v-flash.Especifica se deve gerar um vídeo com som.Prioridade do parâmetro: audio > audio_url. Quando audio=false, a saída ainda será um vídeo silencioso mesmo se uma audio_url for fornecida, e o faturamento será baseado em vídeo silencioso.Valores válidos:
  • true: Valor padrão. Gera um vídeo com som.
  • false: Gera um vídeo silencioso.
Exemplo: true.watermark boolean (Opcional)Especifica se deve adicionar uma marca d'água "AI Generated" no canto inferior direito do vídeo.
  • false: Valor padrão. Nenhuma marca d'água é adicionada.
  • true: Adiciona uma marca d'água.
Exemplo: false.seedinteger(Opcional)A semente de número aleatório. Faixa de valores: [0, 2147483647].Se não especificado, o sistema gera uma. Para melhor reprodutibilidade, use uma semente fixa.A geração é probabilística. Mesmo com a mesma semente, os resultados podem diferir.Exemplo: 12345.

Parâmetros de resposta

  • Resposta bem-sucedida
  • Resposta de erro
Salve o task_id para consultar o status e o resultado da tarefa.
{
        "output": {
            "task_status": "PENDING",
            "task_id": "0385dc79-5ff8-4d82-bcb6-xxxxxx"
        },
        "request_id": "4909100c-7b5a-9f92-bfe5-xxxxxx"
    }
output objectInformações sobre a saída da tarefa.

Propriedades

task_id stringO ID da tarefa. Válido para consultas por 24 horas.task_status stringO status da tarefa.

Valores de enumeração

  • PENDING
  • RUNNING
  • SUCCEEDED
  • FAILED
  • CANCELED
  • UNKNOWN: A tarefa não existe ou seu status é desconhecido.
request_id stringIdentificador único da solicitação para rastreamento e solução de problemas.
code stringCódigo de erro. Retornado apenas para solicitações com falha. Consulte Códigos de erro.
message stringMensagem de erro detalhada. Retornada apenas para solicitações com falha. Consulte Códigos de erro.

Etapa 2: Consultar o resultado da tarefa

  • China (Pequim)
  • Singapura
  • Virgínia
  • Frankfurt
GET https://dashscope.aliyuncs.com/api/v1/tasks/{task_id}
  • Singapura
  • Virgínia
  • China (Pequim)
  • Frankfurt
GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id}Substitua WorkspaceId pelo seu ID do Workspace real.
  • Recomendação de polling: A geração de vídeo leva vários minutos. Use um mecanismo de consulta periódica com um intervalo razoável, como 15 segundos.
  • Transição de estado da tarefa: PENDING → RUNNING → SUCCEEDED ou FAILED.
  • Link do resultado: Após o sucesso da tarefa, uma URL de vídeo válida por 24 horas é retornada. Baixe e salve o vídeo em armazenamento permanente, como o OSS.
  • Validade do task_id: 24 horas. Após esse período, as consultas retornam o status da tarefa como UNKNOWN.

Parâmetros da solicitação

  • Consultar resultado da tarefa
Substitua {task_id} pelo valor task_id retornado pela chamada de API anterior. O task_id é válido para consultas por 24 horas.
curl -X GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id} \
    --header "Authorization: Bearer $DASHSCOPE_API_KEY"
Cabeçalhos
Authorization string (Obrigatório)Autentica a solicitação com uma chave de API do Model Studio. Exemplo: Bearer sk-xxxx.
Parâmetros de caminho
task_id string (Obrigatório)O ID da tarefa.

Parâmetros de resposta

  • Tarefa bem-sucedida
  • Tarefa falhou
  • Consulta de tarefa expirada
As URLs de vídeo são válidas apenas por 24 horas e depois são removidas automaticamente. Salve os vídeos gerados prontamente.
{
    "request_id": "2ca1c497-f9e0-449d-9a3f-xxxxxx",
    "output": {
        "task_id": "af6efbc0-4bef-4194-8246-xxxxxx",
        "task_status": "SUCCEEDED",
        "submit_time": "2025-09-25 11:07:28.590",
        "scheduled_time": "2025-09-25 11:07:35.349",
        "end_time": "2025-09-25 11:17:11.650",
        "orig_prompt": "A scene of urban fantasy art. A dynamic graffiti art character. A boy made of spray paint comes to life from a concrete wall. He raps an English song at high speed while striking a classic, energetic rapper pose. The scene is set under an urban railway bridge at night. The lighting comes from a single street lamp, creating a cinematic atmosphere full of high energy and amazing detail. The audio of the video consists entirely of his rap, with no other dialogue or noise.",
        "video_url": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.mp4?Expires=xxx"
    },
    "usage": {
        "duration": 10,
        "input_video_duration": 0,
        "output_video_duration": 10,
        "video_count": 1,
        "SR": 720
    }
}
outputobjectOs detalhes de saída da tarefa.

Propriedades

task_id stringO ID da tarefa. Válido para consultas por 24 horas.task_status stringO status da tarefa.

Valores de enumeração

  • PENDING
  • RUNNING
  • SUCCEEDED
  • FAILED
  • CANCELED
  • UNKNOWN: A tarefa não existe ou seu status é desconhecido.
Transições de estado durante o polling:
  • PENDING → RUNNING → SUCCEEDED ou FAILED.
  • O status inicial da consulta geralmente é PENDING ou RUNNING.
  • Quando o status muda para SUCCEEDED, a resposta contém a URL do vídeo gerado.
  • Se o status for FAILED, verifique a mensagem de erro e tente novamente a tarefa.
submit_time stringO horário em que a tarefa foi enviada. O horário está em UTC+8 e o formato é YYYY-MM-DD HH:mm:ss.SSS.scheduled_time stringO horário em que a tarefa foi executada. O horário está em UTC+8 e o formato é YYYY-MM-DD HH:mm:ss.SSS.end_time stringO horário em que a tarefa foi concluída. O horário está em UTC+8 e o formato é YYYY-MM-DD HH:mm:ss.SSS.video_url stringURL do vídeo gerado. Retornada apenas quando task_status é SUCCEEDED.Válida por 24 horas. O vídeo está no formato MP4 com codificação H.264.orig_prompt stringO prompt de entrada original, correspondente ao parâmetro de solicitação prompt.actual_prompt stringSe prompt_extend for true, o sistema reescreve o prompt e este campo contém a versão otimizada.
  • Se prompt_extend=false, este campo não é retornado.
  • Observação: O modelo wan2.6 não retorna este campo, independentemente do valor de prompt_extend.
code stringCódigo de erro. Retornado apenas para solicitações com falha. Consulte Códigos de erro.message stringMensagem de erro detalhada. Retornada apenas para solicitações com falha. Consulte Códigos de erro.
usage objectEstatísticas de uso da tarefa, contabilizadas apenas para tarefas bem-sucedidas.

Propriedades

Parâmetros retornados pelos modelos da série wan2,6

input_video_duration integerA duração do vídeo de entrada em segundos. É sempre 0, pois a entrada de vídeo não é suportada atualmente.output_video_duration integerRetornado apenas ao usar modelos wan2.6.A duração do vídeo de saída em segundos. Este valor corresponde a input.duration.duration integerA duração total do vídeo, usada para faturamento.Fórmula de faturamento: duration=input_video_duration+output_video_duration.SR integerRetornado apenas ao usar modelos wan2.6. A faixa de resolução do vídeo gerado. Exemplo: 720.video_count integerO número de vídeos gerados. Fixo em 1.audiobooleanRetornado apenas ao usar o modelo wan2.6-i2v-flash. Indica se a saída é um vídeo com áudio.
duration integerA duração do vídeo gerado em segundos. Valores possíveis: 5, 10.Fórmula de faturamento: Custo = Duração do vídeo em segundos × Preço unitário.SR integerA resolução do vídeo gerado. Valores possíveis: 480, 720, 1080.video_count integerO número de vídeos gerados. Fixo em 1.
video_duration integerA duração do vídeo gerado em segundos. Valores possíveis: 3, 4, 5.Fórmula de faturamento: Custo = Duração do vídeo em segundos × Preço unitário.video_ratio stringA proporção do vídeo gerado. Este valor é sempre "standard".video_count integerO número de vídeos gerados. Fixo em 1.
request_id stringIdentificador único da solicitação para rastreamento e solução de problemas.

Chamadas do DashScope SDK

Os nomes dos parâmetros do SDK são amplamente consistentes com a API HTTP, seguindo as convenções de cada linguagem. As tarefas de imagem para vídeo geralmente levam de 1 a 5 minutos. O SDK encapsula o processo de chamada HTTP assíncrona e suporta chamadas síncronas e assíncronas.
O tempo de processamento depende da fila de tarefas e do status do serviço.

Python SDK

Certifique-se de que sua versão do DashScope Python SDK seja pelo menos 1.25.8 antes de executar o código a seguir.Versões mais antigas podem acionar erros como "url error, please check url!". Para atualizar, consulte Instalar SDK.
Defina o base_http_api_url de acordo com a região do modelo:
  • Pequim
  • Singapura
  • Virgínia
  • Frankfurt
dashscope.base_http_api_url = 'https://dashscope.aliyuncs.com/api/v1'
  • Singapura
  • Virgínia
  • Pequim
  • Frankfurt
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'Substitua WorkspaceId pelo seu ID do Workspace real.

Código de exemplo

  • Chamada síncrona
  • Chamada assíncrona
Uma chamada síncrona bloqueia até que a geração do vídeo seja concluída. Este exemplo demonstra três métodos de entrada de imagem: URL pública, codificação Base64 e caminho de arquivo local.
Exemplo de solicitação
import base64
import os
from http import HTTPStatus
from dashscope import VideoSynthesis
import mimetypes
import dashscope

# The following URL is for the Singapore region. Replace WorkspaceId with your actual workspace ID. URLs differ by region.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

# If the environment variable is not set, replace the following line with your API key from Model Studio: api_key="sk-xxx"
# Get your API key: https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key = os.getenv("DASHSCOPE_API_KEY")

# --- Helper function for Base64 encoding ---
# Format: data:{MIME_type};base64,{base64_data}
def encode_file(file_path):
    mime_type, _ = mimetypes.guess_type(file_path)
    if not mime_type or not mime_type.startswith("image/"):
        raise ValueError("Unsupported or unrecognized image format")
    with open(file_path, "rb") as image_file:
        encoded_string = base64.b64encode(image_file.read()).decode('utf-8')
    return f"data:{mime_type};base64,{encoded_string}"

"""
Image input methods:
The following are three ways to provide an image. Choose one.

1. Public URL: Ideal for images that are already publicly accessible.
2. Local file: Suitable for local development and testing.
3. Base64 encoding: Best for private images or when data must be securely transmitted.
"""

# [Method 1] Use a publicly accessible image URL
# Example: Use a public image URL
img_url = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/wpimhv/rap.png"

# [Method 2] Use a local file (supports absolute and relative paths)
# Format: file:// + file path
# Example (absolute path):
# img_url = "file://" + "/path/to/your/img.png"    # Linux/macOS
# img_url = "file://" + "C:/path/to/your/img.png"  # Windows
# Example (relative path):
# img_url = "file://" + "./img.png"                # Relative to the current script's directory

# [Method 3] Use a Base64-encoded image
# img_url = encode_file("./img.png")

# Set the audio URL
audio_url = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/ozwpvi/rap.mp3"

def sample_call_i2v():
    # A synchronous call returns the result directly.
    print('please wait...')
    rsp = VideoSynthesis.call(api_key=api_key,
                              model='wan2.6-i2v-flash',
                              prompt='A scene of urban fantasy art. A dynamic graffiti art character. A boy made of spray paint comes to life from a concrete wall. He raps an English song at high speed while striking a classic, energetic rapper pose. The scene is set under an urban railway bridge at night. The lighting comes from a single street lamp, creating a cinematic atmosphere full of high energy and amazing detail. The audio of the video consists entirely of his rap, with no other dialogue or noise.',
                              img_url=img_url,
                              audio_url=audio_url,
                              resolution="720P",
                              duration=10,
                              prompt_extend=True,
                              watermark=False,
                              negative_prompt="",
                              seed=12345)
    print(rsp)
    if rsp.status_code == HTTPStatus.OK:
        print("video_url:", rsp.output.video_url)
    else:
        print('Failed, status_code: %s, code: %s, message: %s' %
              (rsp.status_code, rsp.code, rsp.message))

if __name__ == '__main__':
    sample_call_i2v()
Exemplo de resposta
A video_url é válida por 24 horas. Baixe o vídeo antes que expire.
{
    "status_code": 200,
    "request_id": "2794c7a3-fe8c-4dd4-a1b7-xxxxxx",
    "code": null,
    "message": "",
    "output": {
        "task_id": "c15d5b14-07c4-4af5-b862-xxxxxx",
        "task_status": "SUCCEEDED",
        "video_url": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxx.mp4?Expires=xxx",
        "submit_time": "2026-01-22 23:24:46.527",
        "scheduled_time": "2026-01-22 23:24:46.565",
        "end_time": "2026-01-22 23:25:59.978",
        "orig_prompt": "A scene of urban fantasy art. A dynamic graffiti art character. A boy made of spray paint comes to life from a concrete wall. He raps an English song at high speed while striking a classic, energetic rapper pose. The scene is set under an urban railway bridge at night. The lighting comes from a single street lamp, creating a cinematic atmosphere full of high energy and amazing detail. The audio of the video consists entirely of his rap, with no other dialogue or noise."
    },
    "usage": {
        "video_count": 1,
        "video_duration": 0,
        "video_ratio": "",
        "duration": 10,
        "input_video_duration": 0,
        "output_video_duration": 10,
        "audio": true,
        "SR": 720
    }
}

Java SDK

Certifique-se de que sua versão do DashScope Java SDK seja pelo menos 2.22.6 antes de executar o código a seguir.Versões mais antigas podem acionar erros como "url error, please check url!". Para atualizar, consulte Instalar SDK.
Defina o baseHttpApiUrl de acordo com a região do modelo:
  • Pequim
  • Singapura
  • Virgínia
  • Frankfurt
Constants.baseHttpApiUrl = "https://dashscope.aliyuncs.com/api/v1";
  • Singapura
  • Virgínia
  • Pequim
  • Frankfurt
Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";Substitua WorkspaceId pelo seu ID do Workspace real.

Código de exemplo

  • Chamada síncrona
  • Chamada assíncrona
Uma chamada síncrona bloqueia até que a geração do vídeo seja concluída. Este exemplo demonstra três métodos de entrada de imagem: URL pública, codificação Base64 e caminho de arquivo local.
Exemplo de solicitação
// Copyright (c) Alibaba, Inc. and its affiliates.

import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesis;
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesisParam;
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesisResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.JsonUtils;
import com.alibaba.dashscope.utils.Constants;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Base64;
import java.util.HashMap;
import java.util.Map;

public class Image2Video {

    static {
        // Set the endpoint. This example uses the Singapore region. For other regions, see: https://www.alibabacloud.com/help/en/model-studio/image-to-video-api-reference
        Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
    }

    // If the environment variable is not set, replace the following line with your API key from Model Studio: apiKey="sk-xxx"
    // Get your API key: https://www.alibabacloud.com/help/en/model-studio/get-api-key
    static String apiKey = System.getenv("DASHSCOPE_API_KEY");

    /**
     * Image input methods: Choose one of the following three.
     *
     * 1. Public URL: Ideal for images that are already publicly accessible.
     * 2. Local file: Suitable for local development and testing.
     * 3. Base64 encoding: Best for private images or when data must be securely transmitted.
     */

    // [Method 1] Public URL
    static String imgUrl = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/wpimhv/rap.png";

    // [Method 2] Local file path (file:// + absolute path)
    // static String imgUrl = "file://" + "/your/path/to/img.png";    // Linux/macOS
    // static String imgUrl = "file://" + "C:/your/path/to/img.png";  // Windows

    // [Method 3] Base64 encoding
    // static String imgUrl = Image2Video.encodeFile("/your/path/to/img.png");

    // Set the audio URL
    static String audioUrl = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/ozwpvi/rap.mp3";

    public static void image2video() throws ApiException, NoApiKeyException, InputRequiredException {
        // Set the parameters
        Map<String, Object> parameters = new HashMap<>();
        parameters.put("prompt_extend", true);
        parameters.put("watermark", false);
        parameters.put("seed", 12345);

        VideoSynthesis vs = new VideoSynthesis();
        VideoSynthesisParam param =
                VideoSynthesisParam.builder()
                        .apiKey(apiKey)
                        .model("wan2.6-i2v-flash")
                        .prompt("A scene of urban fantasy art. A dynamic graffiti art character. A boy made of spray paint comes to life from a concrete wall. He raps an English song at high speed while striking a classic, energetic rapper pose. The scene is set under an urban railway bridge at night. The lighting comes from a single street lamp, creating a cinematic atmosphere full of high energy and amazing detail. The audio of the video consists entirely of his rap, with no other dialogue or noise.")
                        .imgUrl(imgUrl)
                        .audioUrl(audioUrl)
                        .duration(10)
                        .parameters(parameters)
                        .resolution("720P")
                        .negativePrompt("")
                        .build();
        System.out.println("please wait...");
        VideoSynthesisResult result = vs.call(param);
        System.out.println(JsonUtils.toJson(result));
    }

     /**
     * Encodes a file into a Base64 string.
     * @param filePath The file path.
     * @return A Base64 string in the format data:{MIME_type};base64,{base64_data}.
     */
    public static String encodeFile(String filePath) {
        Path path = Paths.get(filePath);
        if (!Files.exists(path)) {
            throw new IllegalArgumentException("File does not exist: " + filePath);
        }
        // Detect MIME type
        String mimeType = null;
        try {
            mimeType = Files.probeContentType(path);
        } catch (IOException e) {
            throw new IllegalArgumentException("Cannot detect file type: " + filePath);
        }
        if (mimeType == null || !mimeType.startsWith("image/")) {
            throw new IllegalArgumentException("Unsupported or unrecognized image format");
        }
        // Read file content and encode
        byte[] fileBytes = null;
        try{
            fileBytes = Files.readAllBytes(path);
        } catch (IOException e) {
            throw new IllegalArgumentException("Cannot read file content: " + filePath);
        }

        String encodedString = Base64.getEncoder().encodeToString(fileBytes);
        return "data:" + mimeType + ";base64," + encodedString;
    }

    public static void main(String[] args) {
        try {
            image2video();
        } catch (ApiException | NoApiKeyException | InputRequiredException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}
Exemplo de resposta
A video_url é válida por 24 horas. Baixe o vídeo antes que expire.
{
    "request_id": "87c091bb-7a3c-4904-8501-xxxxxx",
    "output": {
        "task_id": "413ed6e4-5f3a-4f57-8d58-xxxxxx",
        "task_status": "SUCCEEDED",
        "video_url": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxx.mp4?Expires=xxx",
        "orig_prompt": "A scene of urban fantasy art. A dynamic graffiti art character. A boy made of spray paint comes to life from a concrete wall. He raps an English song at high speed while striking a classic, energetic rapper pose. The scene is set under an urban railway bridge at night. The lighting comes from a single street lamp, creating a cinematic atmosphere full of high energy and amazing detail. The audio of the video consists entirely of his rap, with no other dialogue or noise.",
        "submit_time": "2026-01-22 23:25:45.729",
        "scheduled_time": "2026-01-22 23:25:45.771",
        "end_time": "2026-01-22 23:26:44.942"
    },
    "usage": {
        "video_count": 1,
        "duration": 10.0,
        "input_video_duration": 0.0,
        "output_video_duration": 10.0,
        "SR": "720"
    },
    "status_code": 200,
    "code": "",
    "message": ""
}

Limitações

  • Retenção de dados: O task_id e a URL do vídeo são retidos por 24 horas. Após esse período, não é possível consultá-los ou baixá-los.
  • Moderação de conteúdo: Todas as entradas (prompts, imagens) e vídeos de saída estão sujeitos à moderação de conteúdo. Violações resultam em um erro IPInfringementSuspect ou DataInspectionFailed. Códigos de erro.

Códigos de erro

Se uma chamada de modelo retornar uma mensagem de erro, consulte Códigos de erro.

Perguntas frequentes

P: Como gerar um vídeo com uma proporção específica?

R: A imagem do primeiro quadro de entrada (img_url) determina a proporção do vídeo de saída. No entanto, uma proporção exata como 3:4 não é garantida, pois podem ocorrer pequenos desvios.
  • Por que ocorrem desvios? O modelo usa a proporção da imagem de entrada como base e a combina com a contagem total de pixels da faixa de resolução selecionada (resolution) para calcular a resolução válida mais próxima. Como a largura e a altura de um vídeo devem ser múltiplos de 16, o modelo ajusta a resolução final adequadamente. Consequentemente, a proporção de saída não é garantida como exatamente 3:4, mas estará muito próxima.
    • Por exemplo, uma imagem de entrada de 750×1000 (proporção 3:4 = 0,75) com resolution definida como "720P" (um alvo de aproximadamente 920.000 pixels totais) produz uma saída de 816×1104 (proporção ≈ 0,739, aproximadamente 900.000 pixels totais).
  • Recomendações:
    • Controle a entrada: Para melhores resultados, use uma imagem de primeiro quadro que já tenha a proporção desejada.
    • Pós-processamento: Se precisar de uma proporção estrita, corte o vídeo ou adicione barras pretas usando uma ferramenta de edição após a geração.

P: Como obter a lista de permissões de domínio de armazenamento de vídeo?

R: Os vídeos gerados pelos modelos são armazenados no OSS. A API retorna uma URL pública temporária. Para configurar uma lista de permissões de firewall para esta URL de download, observe o seguinte: O armazenamento subjacente pode mudar dinamicamente. Este tópico não fornece uma lista fixa de nomes de domínio do OSS para evitar problemas de acesso causados por informações desatualizadas. Se você tiver requisitos de controle de segurança, entre em contato com seu gerente de conta para obter a lista mais recente de nomes de domínio do OSS.
Referência da API de Geração de Texto
Geração de Imagens
  • FAQ
Áudio
API em tempo real
Incorporação de Texto
Produção de Modelos