aliyun-video-style-repaint
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseVideo Style Repaint
视频风格重绘
Validation
验证
bash
mkdir -p output/aliyun-video-style-repaint
python -m py_compile skills/ai/video/aliyun-video-style-repaint/scripts/repaint_video.py && echo "py_compile_ok" > output/aliyun-video-style-repaint/validate.txtPass criteria: command exits 0 and is generated.
output/aliyun-video-style-repaint/validate.txtbash
mkdir -p output/aliyun-video-style-repaint
python -m py_compile skills/ai/video/aliyun-video-style-repaint/scripts/repaint_video.py && echo "py_compile_ok" > output/aliyun-video-style-repaint/validate.txt通过条件:命令退出码为0,且成功生成文件。
output/aliyun-video-style-repaint/validate.txtOutput And Evidence
输出与凭证
- Save task IDs, polling responses, and final video URLs to .
output/aliyun-video-style-repaint/ - Keep at least one end-to-end run log for troubleshooting.
- 将任务ID、轮询响应和最终视频URL保存到目录下。
output/aliyun-video-style-repaint/ - 至少保留一份端到端运行日志用于问题排查。
Prerequisites
前置要求
- Install SDK (recommended in a venv):
bash
python3 -m venv .venv
. .venv/bin/activate
python -m pip install requests- Set in your environment, or add
DASHSCOPE_API_KEYtodashscope_api_key.~/.alibabacloud/credentials - This API is only available in the Beijing region. You must use a Beijing-region API Key.
- 安装SDK(推荐在venv虚拟环境中安装):
bash
python3 -m venv .venv
. .venv/bin/activate
python -m pip install requests- 在环境变量中配置,或者将
DASHSCOPE_API_KEY添加到dashscope_api_key文件中。~/.alibabacloud/credentials - 该API仅支持北京区域,必须使用北京区域的API Key。
Critical model names
关键模型名称
- -- supports 8 preset artistic styles
video-style-transform
- -- 支持8种预设艺术风格
video-style-transform
Supported styles
支持的风格
| Style ID | Name (EN) | Name (CN) |
|---|---|---|
| 0 | Japanese Manga | 日式漫画 |
| 1 | American Comics | 美式漫画 |
| 2 | Fresh Comics | 清新漫画 |
| 3 | 3D Cartoon | 3D 卡通 |
| 4 | Chinese Cartoon | 国风卡通 |
| 5 | Paper Art | 纸艺风格 |
| 6 | Simple Illustration | 简易插画 |
| 7 | Chinese Ink Painting | 国风水墨 |
| 风格ID | 英文名称 | 中文名称 |
|---|---|---|
| 0 | Japanese Manga | 日式漫画 |
| 1 | American Comics | 美式漫画 |
| 2 | Fresh Comics | 清新漫画 |
| 3 | 3D Cartoon | 3D 卡通 |
| 4 | Chinese Cartoon | 国风卡通 |
| 5 | Paper Art | 纸艺风格 |
| 6 | Simple Illustration | 简易插画 |
| 7 | Chinese Ink Painting | 国风水墨 |
API endpoint (async only)
API端点(仅支持异步调用)
POST https://dashscope.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesisRequired headers:
Authorization: Bearer $DASHSCOPE_API_KEYContent-Type: application/jsonX-DashScope-Async: enable
POST https://dashscope.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis必填请求头:
Authorization: Bearer $DASHSCOPE_API_KEYContent-Type: application/jsonX-DashScope-Async: enable
Normalized interface
标准化接口
Request
请求参数
- (string, required) -- public HTTP/HTTPS URL of the input video
video_url - (integer, optional) -- style ID 0-7 (default: 0, Japanese Manga)
style - (integer, optional) -- output frame rate, range [15, 25] (default: 15)
video_fps - (boolean, optional) -- facial expression optimization (default: true)
animate_emotion - (integer, optional) -- output short-side pixels, 720 or 540 (default: 720)
min_len - (boolean, optional) -- super-resolution enhancement (default: false)
use_SR
- (字符串,必填)-- 输入视频的公开HTTP/HTTPS链接
video_url - (整数,可选)-- 风格ID 0-7(默认值:0,日式漫画)
style - (整数,可选)-- 输出帧率,取值范围 [15, 25](默认值:15)
video_fps - (布尔值,可选)-- 面部表情优化(默认值:true)
animate_emotion - (整数,可选)-- 输出短边像素,可选720或540(默认值:720)
min_len - (布尔值,可选)-- 超分辨率增强(默认值:false)
use_SR
Video input limits
视频输入限制
- Formats: MP4, AVI, MKV, MOV, FLV, TS, MPG, MXF
- Resolution: [256, 4096] pixels per side, aspect ratio max 1.8:1
- Duration: up to 30 seconds
- Max size: 100MB
- URL: must be URL-encoded if contains non-ASCII characters
- 格式支持:MP4, AVI, MKV, MOV, FLV, TS, MPG, MXF
- 分辨率:每边像素范围[256, 4096],宽高比最大为1.8:1
- 时长:最长30秒
- 最大大小:100MB
- URL要求:如果包含非ASCII字符,必须进行URL编码
Response (task creation)
响应(任务创建)
- (string) -- use for polling, valid 24 hours
output.task_id - (string) -- PENDING | RUNNING | SUSPENDED | SUCCEEDED | FAILED
output.task_status - (string)
request_id
- (字符串)-- 用于轮询任务状态,有效期24小时
output.task_id - (字符串)-- 任务状态:PENDING | RUNNING | SUSPENDED | SUCCEEDED | FAILED
output.task_status - (字符串)
request_id
Response (task result)
响应(任务结果)
- (string) -- result video URL
output.output_video_url - (string) -- final status
output.task_status - (string) -- task submission time
output.submit_time - (string) -- task execution start time
output.scheduled_time - (string) -- task completion time
output.end_time - (integer) -- video duration in seconds
usage.duration - (integer) -- resolution used
usage.SR
- (字符串)-- 结果视频URL
output.output_video_url - (字符串)-- 任务最终状态
output.task_status - (字符串)-- 任务提交时间
output.submit_time - (字符串)-- 任务执行开始时间
output.scheduled_time - (字符串)-- 任务完成时间
output.end_time - (整数)-- 视频时长,单位为秒
usage.duration - (整数)-- 所用分辨率
usage.SR
Quick start (Python + HTTP)
快速上手(Python + HTTP)
python
import os
import json
import time
import requests
API_KEY = os.getenv("DASHSCOPE_API_KEY")
BASE_URL = "https://dashscope.aliyuncs.com/api/v1"
def create_style_repaint_task(video_url: str, style: int = 0) -> str:
"""Create a video style repaint task and return task_id."""
payload = {
"model": "video-style-transform",
"input": {
"video_url": video_url,
},
"parameters": {
"style": style,
"video_fps": 15,
},
}
resp = requests.post(
f"{BASE_URL}/services/aigc/video-generation/video-synthesis",
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
"X-DashScope-Async": "enable",
},
json=payload,
)
resp.raise_for_status()
data = resp.json()
return data["output"]["task_id"]
def poll_task(task_id: str, interval: int = 15) -> dict:
"""Poll until task completes. Returns final response."""
while True:
resp = requests.get(
f"{BASE_URL}/tasks/{task_id}",
headers={"Authorization": f"Bearer {API_KEY}"},
)
resp.raise_for_status()
data = resp.json()
status = data["output"]["task_status"]
if status in ("SUCCEEDED", "FAILED", "CANCELED", "SUSPENDED"):
return data
time.sleep(interval)python
import os
import json
import time
import requests
API_KEY = os.getenv("DASHSCOPE_API_KEY")
BASE_URL = "https://dashscope.aliyuncs.com/api/v1"
def create_style_repaint_task(video_url: str, style: int = 0) -> str:
"""创建视频风格重绘任务并返回task_id。"""
payload = {
"model": "video-style-transform",
"input": {
"video_url": video_url,
},
"parameters": {
"style": style,
"video_fps": 15,
},
}
resp = requests.post(
f"{BASE_URL}/services/aigc/video-generation/video-synthesis",
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
"X-DashScope-Async: enable",
},
json=payload,
)
resp.raise_for_status()
data = resp.json()
return data["output"]["task_id"]
def poll_task(task_id: str, interval: int = 15) -> dict:
"""轮询直到任务完成,返回最终响应结果。"""
while True:
resp = requests.get(
f"{BASE_URL}/tasks/{task_id}",
headers={"Authorization": f"Bearer {API_KEY}"},
)
resp.raise_for_status()
data = resp.json()
status = data["output"]["task_status"]
if status in ("SUCCEEDED", "FAILED", "CANCELED", "SUSPENDED"):
return data
time.sleep(interval)Error handling
错误处理
| Error | Likely cause | Action |
|---|---|---|
| 401/403 | Missing or invalid | Check env var or credentials file |
400 | Unsupported video format, bad dimensions, invalid style | Validate parameters |
| "does not support synchronous calls" | Missing | Add required header |
| 429 | Rate limit or quota | Retry with backoff |
| 错误 | 可能原因 | 解决措施 |
|---|---|---|
| 401/403 | 缺少 | 检查环境变量或凭证文件 |
400 | 不支持的视频格式、尺寸不合法、风格参数无效 | 校验输入参数 |
| "does not support synchronous calls" | 缺少 | 添加必填请求头 |
| 429 | 触发限流或配额不足 | 退避后重试 |
Output location
输出位置
- Default output:
output/aliyun-video-style-repaint/videos/ - Override base dir with .
OUTPUT_DIR
- 默认输出路径:
output/aliyun-video-style-repaint/videos/ - 可通过环境变量覆盖基础目录。
OUTPUT_DIR
Anti-patterns
错误用法
- Do not use model names other than .
video-style-transform - Do not call this API synchronously -- async header is required.
- Do not use style IDs outside 0-7 range.
- Video URLs expire after 24 hours; download and persist immediately.
- Do not use Singapore endpoint -- this API is Beijing-region only.
- 不要使用以外的模型名。
video-style-transform - 不要同步调用该API -- 必须携带异步请求头。
- 不要使用0-7范围以外的风格ID。
- 视频URL有效期为24小时,请立即下载持久化。
- 不要使用新加坡区域端点 -- 该API仅支持北京区域。
Workflow
工作流程
- Confirm user intent: select desired artistic style from the 8 presets.
- Prepare video URL with valid format and dimensions.
- Configure parameters (style, fps, resolution, super-resolution).
- Create async task and poll for results.
- Download and save transformed video before URL expiration.
- 确认用户需求:从8种预设风格中选择目标艺术风格。
- 准备符合格式和尺寸要求的视频URL。
- 配置参数(风格、帧率、分辨率、超分辨率)。
- 创建异步任务并轮询获取结果。
- 在URL过期前下载并保存转换后的视频。
References
参考资料
- See for full HTTP API details.
references/api_reference.md - See for source links.
references/sources.md
- 完整HTTP API详情请查看。
references/api_reference.md - 源链接请查看。
references/sources.md