Transforme vídeos de entrada em estilos artísticos, preservando a fluidez do movimento e a coerência do conteúdo. O serviço oferece suporte a oito estilos: mangá japonês, quadrinhos americanos, quadrinhos frescos, desenho animado 3D, desenho animado chinês, arte em papel, ilustração simples e pintura chinesa em tinta.
Este serviço de modelo está disponível apenas na região China (Beijing). Para chamar a API, use uma chave de API desta região.
Demonstração de desempenho
|
**Vídeo de entrada** |
**Vídeo de saída (Mangá japonês)** |
Para mais exemplos, consulte Apêndice: Mais demonstrações de efeitos de estilo.
Pré-requisitos
Antes de chamar a API, conclua as etapas a seguir:
Obter uma chave de API na região China (Beijing).
Como funciona
O processamento de vídeo demanda tempo; portanto, a API usa invocação assíncrona para evitar tempos limite. O fluxo de trabalho é o seguinte:
Envie uma tarefa: Faça uma requisição
POSTcom a URL do vídeo e os parâmetros de estilo. A API retorna umtask_idexclusivo.Consulte os resultados: Use o
task_idpara verificar o status por meio de requisiçõesGET. Quando a tarefa for concluída com sucesso, a resposta incluirá a URL do vídeo transformado.
Requisitos do vídeo de entrada
O vídeo de entrada deve atender aos seguintes requisitos:
|
Restrição |
Requisito |
|
Resolução |
Cada lado deve ter entre 256 e 4.096 pixels. A proporção (lado maior:lado menor) não pode exceder 1,8. |
|
Formato |
MP4, AVI, MKV, MOV, FLV, TS, MPG e MXF |
|
Duração |
Máximo de 30 segundos |
|
Tamanho do arquivo |
Máximo de 100 MB |
|
Codificação de URL |
Codifique URLs de vídeo que contenham caracteres não ASCII (por exemplo, caracteres chineses). |
Estilos suportados
|
Código do estilo |
Nome do estilo |
Observações |
|
0 |
Mangá japonês |
Padrão |
|
1 |
Quadrinhos americanos |
|
|
2 |
Quadrinhos frescos |
|
|
3 |
Desenho animado 3D |
|
|
4 |
Desenho animado chinês |
Ideal para entradas com trajes antigos |
|
5 |
Estilo arte em papel |
|
|
6 |
Ilustração simples |
|
|
7 |
Pintura chinesa em tinta |
Etapa 1: Enviar uma tarefa de transformação de estilo de vídeo
POST https://dashscope.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis
Cabeçalhos da requisição
|
Cabeçalho |
Tipo |
Obrigatório |
Descrição |
|
|
string |
Sim |
Tipo de conteúdo. Defina como |
|
|
string |
Sim |
Chave de API para autenticação. Formato: |
|
|
string |
Sim |
Ative o processamento assíncrono. Deve ser definido como |
Corpo da requisição
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
|
|
string |
Sim |
Nome do modelo. Defina como |
|
|
object |
Sim |
Conteúdo de entrada. Consulte parâmetros de entrada. |
|
|
object |
Não |
Parâmetros de processamento de vídeo. Consulte parâmetros. |
parâmetros de entrada
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
|
|
string |
Sim |
URL pública do vídeo de entrada. Exemplo: |
parâmetros
|
Parâmetro |
Tipo |
Obrigatório |
Padrão |
Descrição |
|
|
int |
Não |
0 |
Tipo de estilo. Valores válidos: 0-7. Consulte Estilos suportados para a lista completa. |
|
|
int |
Não |
15 |
Taxa de quadros (quadros por segundo, FPS) do vídeo de saída. Intervalo válido: [15, 25]. |
|
|
bool |
Não |
true |
Indica se as expressões faciais devem ser otimizadas. Ativar esta opção geralmente melhora a sincronia labial e das expressões. Para áreas faciais pequenas, desativar pode melhorar os resultados. |
|
|
int |
Não |
720 |
Contagem de pixels do lado menor do vídeo de saída, que controla a resolução. Valores válidos: |
|
|
bool |
Não |
false |
Indica se o processamento de super-resolução (SR) deve ser aplicado após a transformação de estilo. Melhora a qualidade do vídeo sem custo adicional. Definir |
Exemplos de requisição
Gerar um vídeo de 720p
curl
curl --location --request POST 'https://dashscope.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
--header 'X-DashScope-Async: enable' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "video-style-transform",
"input": {
"video_url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250704/viwndw/%E5%8E%9F%E8%A7%86%E9%A2%91.mp4"
},
"parameters": {
"style": 0,
"video_fps": 15
}
}'
Python
import requests
import os
DASHSCOPE_API_KEY = os.getenv("DASHSCOPE_API_KEY")
# Replace this with your video URL
video_url = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250704/viwndw/%E5%8E%9F%E8%A7%86%E9%A2%91.mp4"
response = requests.post(
"https://dashscope.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis",
headers={
"Authorization": f"Bearer {DASHSCOPE_API_KEY}",
"X-DashScope-Async": "enable",
},
json={
"model": "video-style-transform",
"input": {
"video_url": video_url
},
"parameters": {
"style": 0,
"video_fps": 15
}
}
)
print(response.json())
Gerar um vídeo de 540p
curl
curl --location --request POST 'https://dashscope.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
--header 'X-DashScope-Async: enable' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "video-style-transform",
"input": {
"video_url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250704/viwndw/%E5%8E%9F%E8%A7%86%E9%A2%91.mp4"
},
"parameters": {
"style": 0,
"video_fps": 15,
"min_len": 540
}
}'
Python
import requests
import os
DASHSCOPE_API_KEY = os.getenv("DASHSCOPE_API_KEY")
# Replace this with your video URL
video_url = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250704/viwndw/%E5%8E%9F%E8%A7%86%E9%A2%91.mp4"
response = requests.post(
"https://dashscope.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis",
headers={
"Authorization": f"Bearer {DASHSCOPE_API_KEY}",
"X-DashScope-Async": "enable",
},
json={
"model": "video-style-transform",
"input": {
"video_url": video_url
},
"parameters": {
"style": 0,
"video_fps": 15,
"min_len": 540
}
}
)
print(response.json())
Resposta
Resposta de sucesso
{
"output": {
"task_id": "xxxxxxxx",
"task_status": "PENDING"
},
"request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51"
}
Resposta de erro
{
"code": "InvalidApiKey",
"message": "Invalid API-key provided.",
"request_id": "fb53c4ec-1c12-4fc4-a580-xxxxxxxxxxxx"
}
Parâmetros da resposta
|
Parâmetro |
Tipo |
Descrição |
|
|
object |
Informações de saída da tarefa. |
|
|
string |
ID exclusivo da tarefa assíncrona. Use este ID para consultar o status e os resultados da tarefa. |
|
|
string |
Status da tarefa. Valores possíveis: |
|
|
string |
ID exclusivo da requisição. Use este ID para rastrear e solucionar problemas. |
|
|
string |
Código de erro. Retornado apenas quando a requisição falha. Para detalhes, consulte Mensagens de erro. |
|
|
string |
Detalhes do erro. Retornado apenas quando a requisição falha. Para detalhes, consulte Mensagens de erro. |
Etapa 2: Consultar o status e o resultado da tarefa
GET https://dashscope.aliyuncs.com/api/v1/tasks/{task_id}
Os dados de resultado da tarefa (status e URL do vídeo) são válidos por 24 horas e depois removidos automaticamente. Consulte e salve os resultados prontamente.
Cabeçalhos da requisição
|
Cabeçalho |
Tipo |
Obrigatório |
Descrição |
|
|
string |
Sim |
Chave de API para autenticação. Formato: |
Parâmetros de caminho
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
|
|
string |
Sim |
ID da tarefa retornado na Etapa 1. |
Exemplos de requisição
Substitua {task_id} pelo task_id real obtido na resposta de envio da tarefa.
curl
curl -X GET \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
https://dashscope.aliyuncs.com/api/v1/tasks/{task_id}
Python
import requests
import os
DASHSCOPE_API_KEY = os.getenv("DASHSCOPE_API_KEY")
# Replace task_id with your task_id
task_id = "0c9c33e6-b2e7-41e5-*********"
task_response = requests.get(
f"https://dashscope.aliyuncs.com/api/v1/tasks/{task_id}",
headers={
"Authorization": f"Bearer {DASHSCOPE_API_KEY}"
})
print(task_response.json())
Resposta
Tarefa concluída com sucesso
{
"request_id": "b67df059-ca6a-9d51-afcd-xxxxxxxxxxxx",
"output": {
"task_id": "d76ec1e8-ea27-4038-8913-xxxxxxxxxxxx",
"task_status": "SUCCEEDED",
"submit_time": "2024-05-16 13:50:01.247",
"scheduled_time": "2024-05-16 13:50:01.354",
"end_time": "2024-05-16 13:50:27.795",
"output_video_url": "http://xxx/result.mp4"
},
"usage": {
"duration": 3,
"SR": 720
}
}
Tarefa em execução
As tarefas enviadas entram em fila e depois são agendadas. O status muda para RUNNING quando a tarefa é agendada.
{
"request_id": "e5d70b02-ebd3-98ce-9fe8-xxxxxxxxxxxx",
"output": {
"task_id": "13b1848b-5493-4c0e-xxxxxxxxxxxx",
"task_status": "RUNNING",
"submit_time": "2025-09-08 15:53:13.143",
"scheduled_time": "2025-09-08 15:53:13.169"
}
}
Falha na tarefa
{
"request_id": "dccfdf23-b38e-97a6-a07b-xxxxxxxxxxxx",
"output": {
"task_id": "4cbabbdf-2c1f-43f4-b983-xxxxxxxxxxxx",
"task_status": "FAILED",
"submit_time": "2024-05-16 14:15:14.103",
"scheduled_time": "2024-05-16 14:15:14.154",
"end_time": "2024-05-16 14:15:14.694",
"code": "InvalidParameter.FileDownload",
"message": "download for input video error"
}
}
Parâmetros da resposta
|
Parâmetro |
Tipo |
Descrição |
|
|
string |
ID exclusivo da requisição. Use este ID para rastrear e solucionar problemas. |
|
|
object |
Informações de saída da tarefa. |
|
|
string |
ID da tarefa. Válido por 24 horas. |
|
|
string |
Status da tarefa. Valores possíveis: |
|
|
string |
Horário em que a tarefa foi enviada. Fuso horário UTC+8. Formato: |
|
|
string |
Horário em que a tarefa começou a ser executada. Fuso horário UTC+8. Formato: |
|
|
string |
Horário em que a tarefa foi concluída. Fuso horário UTC+8. Formato: |
|
|
string |
URL do vídeo transformado. Retornada apenas quando |
|
|
string |
Código de erro. Retornado apenas quando |
|
|
string |
Detalhes do erro. Retornados apenas quando |
|
|
object |
Estatísticas de uso da tarefa. Retornadas apenas quando |
|
|
float |
Duração do vídeo gerado em segundos. |
|
|
int |
Valor em pixels do lado menor do vídeo, usado para faturamento. Este valor corresponde ao valor de |
Faturamento e limites de taxa
A cobrança ocorre apenas para tarefas bem-sucedidas. A taxa é calculada com base na duração do vídeo de saída (segundos) e na resolução selecionada.
Fórmula de faturamento: Taxa total = Duração do vídeo de saída (segundos) x Preço unitário para a resolução correspondente
A taxa final é calculada a partir dos camposdurationeSRno objetousage.
Preços
|
Modelo |
Resolução |
Preço unitário |
|
video-style-transform |
720p |
$0,071677/segundo |
|
video-style-transform |
540p |
$0,028671/segundo |
Limites de taxa
Os limites de taxa são compartilhados entre contas e usuários RAM.
|
Tipo de limite |
Valor |
|
Consultas por segundo (QPS) para a API de envio de tarefas |
2 |
|
Tarefas simultâneas |
1 |
Exemplo de faturamento
Exemplo: Envie um vídeo de 10 segundos com resolução de 720p. Se a tarefa for bem-sucedida, a taxa será: 10 segundos × $0,071677/segundo = $0,71677.
Códigos de erro
Se a chamada do modelo falhar e retornar uma mensagem de erro, consulte Códigos de erro para obter a solução.
Apêndice: Mais demonstrações de efeitos de estilo
|
Nome do estilo |
Vídeo original |
Vídeo transformado |
|
Mangá japonês (style=0) |
||
|
Quadrinhos americanos (style=1) |
||
|
Quadrinhos frescos (style=2) |
||
|
Desenho animado 3D (style=3) |
||
|
Desenho animado chinês (style=4) |
||
|
Estilo arte em papel (style=5) |
%E6%B1%BD%E8%BD%A6%E8%8D%89%E5%8E%9F_%E7%BA%B8%E8%89%BA%E9%A3%8E%E6%A0%BC.mp4 |
|
|
Ilustração simples (style=6) |
||
|
Pintura chinesa em tinta (style=7) |
.inline-code___exakR {
font-family: monospace;
background-color: #f5f5f5;
padding: 2px 4px;
border-radius: 3px;
}