O modelo Wan 2,2 gera um vídeo com transições suaves a partir de um primeiro quadro, um último quadro e um prompt de texto.
Documentos relacionados: Guia do usuário
Observações de uso
Para garantir chamadas de API bem-sucedidas, o modelo, a URL do endpoint e a chave de API devem estar na mesma região. Chamadas entre regiões falharão.
Selecione um modelo: Confirme a região onde o modelo está disponível.
Selecione uma URL: Escolha a URL do endpoint correspondente à sua região. Há suporte tanto para URLs HTTP quanto para URLs do DashScope SDK.
Configure sua chave de API: Selecione uma região, obtenha sua chave de API e defina-a como variável de ambiente.
Instale o SDK: Para fazer chamadas de API com o SDK, instale o DashScope SDK.
Os exemplos de código neste tópico aplicam-se a 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 migrar para os novos domínios:
China (Pequim): de
https://dashscope.aliyuncs.comparahttps://{WorkspaceId}.cn-beijing.maas.aliyuncs.comSingapura: de
https://dashscope-intl.aliyuncs.comparahttps://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com
{WorkspaceId} é o ID do seu workspace, encontrado na página Workspace Details no console do Model Studio. O domínio existente permanece totalmente funcional.
Chamada HTTP
Como as tarefas de imagem para vídeo são operações de longa duração que geralmente levam de 1 a 5 minutos, a API utiliza chamada assíncrona. O processo envolve duas etapas principais: crie uma tarefa e consulte o resultado periodicamente.
Etapa 1: Crie uma tarefa
China (Pequim)
POST https://dashscope.aliyuncs.com/api/v1/services/aigc/image2video/video-synthesis
Singapura
POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/image2video/video-synthesis
Substitua WorkspaceId pelo seu ID do Workspace real.
Singapura
POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/image2video/video-synthesis
Substitua WorkspaceId pelo seu ID do Workspace real.
China (Pequim)
POST https://dashscope.aliyuncs.com/api/v1/services/aigc/image2video/video-synthesis
Após criar a tarefa, use o
task_idretornado para consultar o resultado. Otask_idé válido por 24 horas. Não crie tarefas duplicadas. Em vez disso, use consultas periódicas para recuperar o resultado.Para orientações a iniciantes, consulte Chamar APIs com Postman ou cURL.
Parâmetros da solicitação |
Primeiro e último quadrosGera um vídeo com base em um primeiro quadro, um último quadro e um prompt.
Prompt negativoUse o parâmetro negative_prompt para excluir certos elementos, como pessoas, do vídeo gerado.
|
Cabeçalhos da solicitação |
|
|
Content-Type Tipo de conteúdo da solicitação. Deve ser |
|
|
Authorization Autentica a solicitação com uma chave de API do Model Studio. Exemplo: Bearer sk-xxxx. |
|
|
X-DashScope-Async Ative o processamento assíncrono. Solicitações HTTP suportam apenas chamadas assíncronas. Deve ser Importante
Se este cabeçalho estiver ausente, o erro "current user api does not support synchronous calls" será retornado. |
|
Corpo da solicitação |
|
|
model Nome do modelo. Exemplo: wan2.2-kf2v-flash. Para mais detalhes, consulte o console do Model Studio. |
|
|
input Contém a entrada principal da tarefa, como o prompt. |
|
|
parameters Parâmetros de processamento de vídeo. |
Parâmetros da resposta |
Resposta bem-sucedidaSalve o
Resposta de erroFalha na criação da tarefa. Consulte Códigos de erro.
|
|
output Informações de saída da tarefa. |
|
|
request_id Identificador único da solicitação para rastreamento e solução de problemas. |
|
|
code Código de erro. Retornado apenas para solicitações com falha. Consulte Códigos de erro. |
|
|
message Mensagem de erro detalhada. Retornada apenas para solicitações com falha. Consulte Códigos de erro. |
Etapa 2: Consultar o resultado
China (Pequim)
GET https://dashscope.aliyuncs.com/api/v1/tasks/{task_id}
Singapura
GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id}
Substitua WorkspaceId pelo seu ID do Workspace real.
Singapura
GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id}
Substitua WorkspaceId pelo seu ID do Workspace real.
China (Pequim)
GET https://dashscope.aliyuncs.com/api/v1/tasks/{task_id}
Recomendação de consulta periódica: A geração de vídeo leva vários minutos. Use um mecanismo de consulta periódica com 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 tarefaSubstitua As chaves de API diferem por região. Para mais informações, consulte Obter uma chave de API. Se você usar um modelo na região China (Pequim), substitua
|
Cabeçalhos da solicitação |
|
|
Authorization Autentica a solicitação com uma chave de API do Model Studio. Exemplo: Bearer sk-xxxx. |
|
Parâmetros de caminho |
|
|
task_id ID da tarefa. |
Parâmetros da resposta |
Tarefa bem-sucedidaAs URLs de vídeo são válidas apenas por 24 horas e depois removidas automaticamente. Salve os vídeos gerados prontamente. Tarefa falhouQuando uma tarefa falha,
Consulta de tarefa expiradaO
|
|
output Informações de saída da tarefa. |
|
|
usage Estatísticas de uso da tarefa. Apenas tarefas bem-sucedidas são cobradas. |
|
|
request_id Identificador ú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, e a estrutura segue as convenções de cada linguagem de programação.
Como as tarefas de imagem para vídeo são de longa duração (geralmente 1–5 minutos), o SDK lida internamente com as chamadas HTTP assíncronas, suportando métodos síncronos e assíncronos.
O tempo real de processamento depende do número de tarefas na fila e do desempenho do serviço. Aguarde.
Chamadas do SDK Python
Antes de execute o código abaixo, certifique-se de que a versão do DashScope Python SDK seja no mínimo 1.23.8.
Versões anteriores podem gerar erros como "url error, please check url!". Consulte Instale SDK para atualize.
Defina o base_http_api_url com base na região do modelo:
Pequim
dashscope.base_http_api_url = 'https://dashscope.aliyuncs.com/api/v1'
Singapura
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
Substitua WorkspaceId pelo seu ID do Workspace real.
Singapura
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
Substitua WorkspaceId pelo seu ID do Workspace real.
Pequim
dashscope.base_http_api_url = 'https://dashscope.aliyuncs.com/api/v1'
Código de exemplo
Chamada síncrona
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
Exemplo de resposta
A video_url é válida por 24 horas. Baixe o vídeo dentro desse período.
{
"status_code": 200,
"request_id": "efa545b3-f95c-9e3a-a3b6-xxxxxx",
"code": null,
"message": "",
"output": {
"task_id": "721164c6-8619-4a35-a6d9-xxxxxx",
"task_status": "SUCCEEDED",
"video_url": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.mp4?xxxxx",
"submit_time": "2025-02-12 11:03:30.701",
"scheduled_time": "2025-02-12 11:06:05.378",
"end_time": "2025-02-12 11:12:18.853",
"orig_prompt": "Realistic style, a small black cat looks up at the sky curiously, the camera gradually rises from eye level, and finally captures its curious gaze from a top-down view.",
"actual_prompt": "Realistic style, a small black cat looks up at the sky curiously, the camera gradually rises from eye level, and finally captures its curious gaze from a top-down view. The cat's fur is jet-black and glossy, its eyes are large and bright with golden pupils. It looks up with its ears pricked, appearing exceptionally focused. After the camera moves up, the cat turns to face the camera, its eyes filled with curiosity and alertness. The background is simple, highlighting the cat's detailed features. A close-up shot with soft, natural light."
},
"usage": {
"video_count": 1,
"video_duration": 5,
"video_ratio": "standard"
}
}
Chamada assíncrona
Este exemplo demonstra uma chamada assíncrona, que retorna imediatamente um ID de tarefa. Consulte o status da tarefa periodicamente ou aguarde a conclusão.
Exemplo de solicitação
Exemplo de resposta
-
Resposta após a criação da tarefa
{ "status_code": 200, "request_id": "c86ff7ba-8377-917a-90ed-xxxxxx", "code": "", "message": "", "output": { "task_id": "721164c6-8619-4a35-a6d9-xxxxxx", "task_status": "PENDING", "video_url": "" }, "usage": null } -
Exemplo de resposta para uma tarefa concluída
A
video_urlé válida por 24 horas. Baixe o vídeo dentro desse período.{ "status_code": 200, "request_id": "efa545b3-f95c-9e3a-a3b6-xxxxxx", "code": null, "message": "", "output": { "task_id": "721164c6-8619-4a35-a6d9-xxxxxx", "task_status": "SUCCEEDED", "video_url": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.mp4?xxxxx", "submit_time": "2025-02-12 11:03:30.701", "scheduled_time": "2025-02-12 11:06:05.378", "end_time": "2025-02-12 11:12:18.853", "orig_prompt": "Realistic style, a small black cat looks up at the sky curiously, the camera gradually rises from eye level, and finally captures its curious gaze from a top-down view.", "actual_prompt": "Realistic style, a small black cat looks up at the sky curiously, the camera gradually rises from eye level, and finally captures its curious gaze from a top-down view. The cat's fur is jet-black and glossy, its eyes are large and bright with golden pupils. It looks up with its ears pricked, appearing exceptionally focused. After the camera moves up, the cat turns to face the camera, its eyes filled with curiosity and alertness. The background is simple, highlighting the cat's detailed features. A close-up shot with soft, natural light." }, "usage": { "video_count": 1, "video_duration": 5, "video_ratio": "standard" } }
Chamada síncrona
Este exemplo demonstra uma chamada síncrona com dois métodos de entrada de imagem: URL pública e caminho de arquivo local.
Exemplo de solicitação
import os
from http import HTTPStatus
# DashScope SDK >= 1.23.4
from dashscope import VideoSynthesis
import dashscope
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
# Get the DashScope API key (which is your Model Studio API key) from an environment variable.
api_key = os.getenv("DASHSCOPE_API_KEY")
# ========== Image input method (choose one) ==========
# [Method 1] Use a public image URL
first_frame_url = "https://wanx.alicdn.com/material/20250318/first_frame.png"
last_frame_url = "https://wanx.alicdn.com/material/20250318/last_frame.png"
# [Method 2] Use a local file path (file:// + file path)
# Use an absolute path:
# first_frame_url = "file://" + "/path/to/your/first_frame.png" # Linux/macOS
# last_frame_url = "file://" + "C:/path/to/your/last_frame.png" # Windows
# Or use a relative path:
# first_frame_url = "file://" + "./first_frame.png" # Use your actual path.
# last_frame_url = "file://" + "./last_frame.png" # Use your actual path.
def sample_sync_call_kf2v():
print('please wait...')
rsp = VideoSynthesis.call(api_key=api_key,
model="wan2.2-kf2v-flash",
prompt="Realistic style, a small black cat looks up at the sky curiously, the camera gradually rises from eye level, and finally captures its curious gaze from a top-down view.",
first_frame_url=first_frame_url,
last_frame_url=last_frame_url,
resolution="720P",
prompt_extend=True)
print(rsp)
if rsp.status_code == HTTPStatus.OK:
print(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_sync_call_kf2v()
Exemplo de resposta
A video_url é válida por 24 horas. Baixe o vídeo dentro desse período.
{
"status_code": 200,
"request_id": "a37fafc3-907c-96f3-95a6-5b2a8268a3fd",
"code": null,
"message": "",
"output": {
"task_id": "4dba0092-da13-42b2-afb1-0f7b8a0f4643",
"task_status": "SUCCEEDED",
"video_url": "https://dashscope-result-wlcb-acdr-1.oss-cn-wulanchabu-acdr-1.aliyuncs.com/xxx.mp4?xxxxx",
"submit_time": "2025-05-23 15:50:12.404",
"scheduled_time": "2025-05-23 15:50:12.443",
"end_time": "2025-05-23 15:54:56.502",
"orig_prompt": "Realistic style, a small black cat looks up at the sky curiously, the camera gradually rises from eye level, and finally captures its curious gaze from a top-down view.",
"actual_prompt": "Realistic style, a small black cat looks up at the sky curiously, the camera gradually rises from eye level, and finally captures its curious gaze from a top-down view. The cat's yellow eyes are bright and expressive, its ears are pricked, and its whiskers are clearly visible. The background is a simple, light-colored wall that highlights the cat's black fur and focused expression. A close-up shot emphasizes the change in the cat's gaze and posture."
},
"usage": {
"video_count": 1,
"video_duration": 5,
"video_ratio": "standard"
}
}
Chamada assíncrona
Este exemplo demonstra uma chamada assíncrona, que retorna imediatamente um ID de tarefa. Consulte o status da tarefa periodicamente ou aguarde a conclusão.
Exemplo de solicitação
import os
from http import HTTPStatus
# DashScope SDK >= 1.23.4
from dashscope import VideoSynthesis
import dashscope
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
# Get the DashScope API key (which is your Model Studio API key) from an environment variable.
api_key = os.getenv("DASHSCOPE_API_KEY")
# ========== Image input method (choose one) ==========
# [Method 1] Use a public image URL
first_frame_url = "https://wanx.alicdn.com/material/20250318/first_frame.png"
last_frame_url = "https://wanx.alicdn.com/material/20250318/last_frame.png"
# [Method 2] Use a local file path (file:// + file path)
# Use an absolute path:
# first_frame_url = "file://" + "/path/to/your/first_frame.png" # Linux/macOS
# last_frame_url = "file://" + "C:/path/to/your/last_frame.png" # Windows
# Or use a relative path:
# first_frame_url = "file://" + "./first_frame.png" # Use your actual path.
# last_frame_url = "file://" + "./last_frame.png" # Use your actual path.
def sample_async_call_kf2v():
print('please wait...')
rsp = VideoSynthesis.async_call(api_key=api_key,
model="wan2.2-kf2v-flash",
prompt="Realistic style, a small black cat looks up at the sky curiously, the camera gradually rises from eye level, and finally captures its curious gaze from a top-down view.",
first_frame_url=first_frame_url,
last_frame_url=last_frame_url,
resolution="720P",
prompt_extend=True)
print(rsp)
if rsp.status_code == HTTPStatus.OK:
print("task_id: %s" % rsp.output.task_id)
else:
print('Failed, status_code: %s, code: %s, message: %s' %
(rsp.status_code, rsp.code, rsp.message))
# Get the task information, including the task status.
status = VideoSynthesis.fetch(task=rsp, api_key=api_key)
if status.status_code == HTTPStatus.OK:
print(status.output.task_status) # check the task status
else:
print('Failed, status_code: %s, code: %s, message: %s' %
(status.status_code, status.code, status.message))
# Wait for the task to complete. This method polls the fetch endpoint at intervals until the task is finished.
rsp = VideoSynthesis.wait(task=rsp, api_key=api_key)
print(rsp)
if rsp.status_code == HTTPStatus.OK:
print(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_async_call_kf2v()
Exemplo de resposta
-
Resposta após a criação da tarefa
{ "status_code": 200, "request_id": "c86ff7ba-8377-917a-90ed-xxxxxx", "code": "", "message": "", "output": { "task_id": "721164c6-8619-4a35-a6d9-xxxxxx", "task_status": "PENDING", "video_url": "" }, "usage": null } -
Exemplo de resposta para uma tarefa concluída
A
video_urlé válida por 24 horas. Baixe o vídeo dentro desse período.{ "status_code": 200, "request_id": "efa545b3-f95c-9e3a-a3b6-xxxxxx", "code": null, "message": "", "output": { "task_id": "721164c6-8619-4a35-a6d9-xxxxxx", "task_status": "SUCCEEDED", "video_url": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.mp4?xxxxx", "submit_time": "2025-02-12 11:03:30.701", "scheduled_time": "2025-02-12 11:06:05.378", "end_time": "2025-02-12 11:12:18.853", "orig_prompt": "Realistic style, a small black cat looks up at the sky curiously, the camera gradually rises from eye level, and finally captures its curious gaze from a top-down view.", "actual_prompt": "Realistic style, a small black cat looks up at the sky curiously, the camera gradually rises from eye level, and finally captures its curious gaze from a top-down view. The cat's fur is jet-black and glossy, its eyes are large and bright with golden pupils. It looks up with its ears pricked, appearing exceptionally focused. After the camera moves up, the cat turns to face the camera, its eyes filled with curiosity and alertness. The background is simple, highlighting the cat's detailed features. A close-up shot with soft, natural light." }, "usage": { "video_count": 1, "video_duration": 5, "video_ratio": "standard" } }
Chamadas do SDK Java
Antes de execute o código abaixo, certifique-se de que a versão do DashScope Java SDK seja no mínimo 2.20.9.
Versões anteriores podem gerar erros como "url error, please check url!". Consulte Instale SDK para atualize.
Código de exemplo
Chamada síncrona
Este exemplo demonstra uma chamada síncrona e suporta três métodos de entrada de imagem: URL pública, codificação Base64 e caminho de arquivo local.
Exemplo de solicitação
Exemplo de resposta
A video_url é válida por 24 horas. Baixe o vídeo dentro desse período.
{
"request_id": "e6bb4517-c073-9c10-b748-dedb8c11bb41",
"output": {
"task_id": "984784fe-83c1-4fc4-88c7-52c2c1fa92a2",
"task_status": "SUCCEEDED",
"video_url": "https://dashscope-result-wlcb-acdr-1.oss-cn-wulanchabu-acdr-1.aliyuncs.com/xxx.mp4?xxxxx"
},
"usage": {
"video_count": 1,
"video_duration": 5,
"video_ratio": "standard"
}
}
Chamada assíncrona
Este exemplo demonstra uma chamada assíncrona, que retorna imediatamente um ID de tarefa. Consulte o status da tarefa periodicamente ou aguarde a conclusão.
Exemplo de solicitação
Exemplo de resposta
-
Resposta após a criação da tarefa
{ "request_id": "5dbf9dc5-4f4c-9605-85ea-xxxxxxxx", "output": { "task_id": "7277e20e-aa01-4709-xxxxxxxx", "task_status": "PENDING" } } -
Exemplo de resposta para uma tarefa concluída
A
video_urlé válida por 24 horas. Baixe o vídeo dentro desse período.{ "request_id": "1625235c-c13e-93ec-aff7-xxxxxxxx", "output": { "task_id": "464a5e46-79a6-46fd-9823-xxxxxxxx", "task_status": "SUCCEEDED", "video_url": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.mp4?xxxxxx" }, "usage": { "video_count": 1, "video_duration": 5, "video_ratio": "standard" } }
Chamada síncrona
Este exemplo demonstra uma chamada síncrona com dois métodos de entrada de imagem: URL pública e caminho de arquivo local.
Exemplo de solicitação
// Copyright (c) Alibaba, Inc. and its affiliates.
// DashScope SDK >= 2.20.1
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.Constants;
import com.alibaba.dashscope.utils.JsonUtils;
import java.util.HashMap;
import java.util.Map;
public class Kf2vSyncIntl {
static {
Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
}
// Get the DashScope API key (which is your Model Studio API key) from an environment variable.
static String apiKey = System.getenv("DASHSCOPE_API_KEY");
/**
* Image input method (choose one):
*
* [Method 1] Public URL
*/
static String firstFrameUrl = "https://wanx.alicdn.com/material/20250318/first_frame.png";
static String lastFrameUrl = "https://wanx.alicdn.com/material/20250318/last_frame.png";
/**
* [Method 2] Local file path (file://+absolute path or file:///+absolute path)
*/
// static String firstFrameUrl = "file://" + "/your/path/to/first_frame.png"; // Linux/macOS
// static String lastFrameUrl = "file:///" + "C:/path/to/your/img.png"; // Windows
public static void syncCall() {
Map<String, Object> parameters = new HashMap<>();
parameters.put("prompt_extend", true);
parameters.put("resolution", "720P");
VideoSynthesis videoSynthesis = new VideoSynthesis();
VideoSynthesisParam param =
VideoSynthesisParam.builder()
.apiKey(apiKey)
.model("wan2.2-kf2v-flash")
.prompt("Realistic style, a small black cat looks up at the sky curiously, the camera gradually rises from eye level, and finally captures its curious gaze from a top-down view.")
.firstFrameUrl(firstFrameUrl)
.lastFrameUrl(lastFrameUrl)
.parameters(parameters)
.build();
VideoSynthesisResult result = null;
try {
// Making a synchronous call. This may take a moment.
result = videoSynthesis.call(param);
} catch (ApiException | NoApiKeyException e){
throw new RuntimeException(e.getMessage());
} catch (InputRequiredException e) {
throw new RuntimeException(e);
}
System.out.println(JsonUtils.toJson(result));
}
public static void main(String[] args) {
syncCall();
}
}
Exemplo de resposta
A video_url é válida por 24 horas. Baixe o vídeo dentro desse período.
{
"request_id": "e6bb4517-c073-9c10-b748-dedb8c11bb41",
"output": {
"task_id": "984784fe-83c1-4fc4-88c7-52c2c1fa92a2",
"task_status": "SUCCEEDED",
"video_url": "https://dashscope-result-wlcb-acdr-1.oss-cn-wulanchabu-acdr-1.aliyuncs.com/xxx.mp4?xxxxx"
},
"usage": {
"video_count": 1,
"video_duration": 5,
"video_ratio": "standard"
}
}
Chamada assíncrona
Este exemplo demonstra uma chamada assíncrona, que retorna imediatamente um ID de tarefa. Consulte o status da tarefa periodicamente ou aguarde a conclusão.
Exemplo de solicitação
// Copyright (c) Alibaba, Inc. and its affiliates.
// DashScope SDK >= 2.20.1
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.Constants;
import com.alibaba.dashscope.utils.JsonUtils;
import java.util.HashMap;
import java.util.Map;
public class Kf2vAsync {
static {
Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
}
// Get the DashScope API key (which is your Model Studio API key) from an environment variable.
static String apiKey = System.getenv("DASHSCOPE_API_KEY");
/**
* Image input method (choose one):
*
* [Method 1] Public URL
*/
static String firstFrameUrl = "https://wanx.alicdn.com/material/20250318/first_frame.png";
static String lastFrameUrl = "https://wanx.alicdn.com/material/20250318/last_frame.png";
/**
* [Method 2] Local file path (file://+absolute path or file:///+absolute path)
*/
// static String firstFrameUrl = "file://" + "/your/path/to/first_frame.png"; // Linux/macOS
// static String lastFrameUrl = "file:///" + "C:/path/to/your/img.png"; // Windows
public static void asyncCall(){
// Set parameters.
Map<String, Object> parameters = new HashMap<>();
parameters.put("prompt_extend", true);
parameters.put("resolution", "720P");
VideoSynthesis videoSynthesis = new VideoSynthesis();
VideoSynthesisParam param =
VideoSynthesisParam.builder()
.apiKey(apiKey)
.model("wan2.2-kf2v-flash")
.prompt("Realistic style, a small black cat looks up at the sky curiously, the camera gradually rises from eye level, and finally captures its curious gaze from a top-down view.")
.firstFrameUrl(firstFrameUrl)
.lastFrameUrl(lastFrameUrl)
.parameters(parameters)
.build();
VideoSynthesisResult result = null;
try {
// Making an asynchronous call.
result = videoSynthesis.asyncCall(param);
} catch (ApiException | NoApiKeyException e){
throw new RuntimeException(e.getMessage());
} catch (InputRequiredException e) {
throw new RuntimeException(e);
}
System.out.println(JsonUtils.toJson(result));
String taskId = result.getOutput().getTaskId();
System.out.println("taskId=" + taskId);
try {
result = videoSynthesis.wait(taskId, apiKey);
} catch (ApiException | NoApiKeyException e){
throw new RuntimeException(e.getMessage());
}
System.out.println(JsonUtils.toJson(result));
System.out.println(JsonUtils.toJson(result.getOutput()));
}
public static void main(String[] args){
asyncCall();
}
}
Exemplo de resposta
-
Resposta após a criação da tarefa
{ "request_id": "5dbf9dc5-4f4c-9605-85ea-xxxxxxxx", "output": { "task_id": "7277e20e-aa01-4709-xxxxxxxx", "task_status": "PENDING" } } -
Exemplo de resposta para uma tarefa concluída
A
video_urlé válida por 24 horas. Baixe o vídeo dentro desse período.{ "request_id": "1625235c-c13e-93ec-aff7-xxxxxxxx", "output": { "task_id": "464a5e46-79a6-46fd-9823-xxxxxxxx", "task_status": "SUCCEEDED", "video_url": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.mp4?xxxxxx" }, "usage": { "video_count": 1, "video_duration": 5, "video_ratio": "standard" } }
Limitações
Retenção de dados: O
task_ide avideo_urlsão retidos por 24 horas. Após esse período, não podem ser consultados ou baixados.Suporte a áudio: O serviço gera apenas vídeos silenciosos. Para gerar áudio, use a síntese de fala.
Moderação de Conteúdo: A Moderação de Conteúdo analisa todos os prompts de entrada, imagens e vídeos de saída. Se qualquer conteúdo violar as políticas de uso, o serviço retornará um erro "IPInfringementSuspect" ou "DataInspectionFailed". Para mais detalhes, consulte Códigos de erro.
Códigos de erro
Se uma chamada de modelo falhar, consulte Códigos de erro para solução de problemas.
FAQ
P: Como gerar uma proporção de aspecto específica?
R: A proporção de aspecto do vídeo de saída depende da imagem do primeiro quadro (first_frame_url). No entanto, não é possível garantir uma proporção exata (como 3:4 estrito), podendo haver pequenos desvios.
-
Por que a proporção de aspecto apresenta desvios?
O modelo usa a proporção de aspecto da imagem de entrada como base e calcula a resolução válida mais próxima com base no total de pixels da configuração de
resolutionselecionada. Como a largura e a altura do vídeo devem ser múltiplos de 16, o modelo faz pequenos ajustes na resolução final.Por exemplo, se você fornecer uma imagem de entrada de 750×1000 (proporção de 3:4 ou 0,75) e definir
resolutioncomo "720P" (visando aproximadamente 920.000 pixels), a saída real poderá ser 816×1104 (proporção de aproximadamente 0,739, com cerca de 900.000 pixels).
-
Recomendações:
Imagem de Entrada: Para melhores resultados, use uma imagem de primeiro quadro que corresponda à proporção de aspecto desejada.
Pós-processamento: Se uma proporção de aspecto estrita for necessária, use uma ferramenta de edição de vídeo para cortar o vídeo gerado ou adicionar barras pretas.
P: Como obtenho a lista de permissões de nomes de domínio para 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 configure uma lista de permissões de firewall para esta URL de download, observe: o armazenamento subjacente pode mudar dinamicamente. Este tópico não fornece uma lista fixa de permissões de nomes de domínio do OSS para evitar problemas de acesso causados por informações desatualizadas. Se tiver requisitos de controle de segurança, entre em contato com o gerente da sua conta para obter a lista mais recente de nomes de domínio do OSS.