aliyun-video-style-repaint

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Video 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.txt
Pass criteria: command exits 0 and
output/aliyun-video-style-repaint/validate.txt
is generated.
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.txt
通过条件:命令退出码为0,且成功生成
output/aliyun-video-style-repaint/validate.txt
文件。

Output 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
    DASHSCOPE_API_KEY
    in your environment, or add
    dashscope_api_key
    to
    ~/.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

关键模型名称

  • video-style-transform
    -- supports 8 preset artistic styles
  • video-style-transform
    -- 支持8种预设艺术风格

Supported styles

支持的风格

Style IDName (EN)Name (CN)
0Japanese Manga日式漫画
1American Comics美式漫画
2Fresh Comics清新漫画
33D Cartoon3D 卡通
4Chinese Cartoon国风卡通
5Paper Art纸艺风格
6Simple Illustration简易插画
7Chinese Ink Painting国风水墨
风格ID英文名称中文名称
0Japanese Manga日式漫画
1American Comics美式漫画
2Fresh Comics清新漫画
33D Cartoon3D 卡通
4Chinese Cartoon国风卡通
5Paper Art纸艺风格
6Simple Illustration简易插画
7Chinese Ink Painting国风水墨

API endpoint (async only)

API端点(仅支持异步调用)

POST https://dashscope.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis
Required headers:
  • Authorization: Bearer $DASHSCOPE_API_KEY
  • Content-Type: application/json
  • X-DashScope-Async: enable
POST https://dashscope.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis
必填请求头:
  • Authorization: Bearer $DASHSCOPE_API_KEY
  • Content-Type: application/json
  • X-DashScope-Async: enable

Normalized interface

标准化接口

Request

请求参数

  • video_url
    (string, required) -- public HTTP/HTTPS URL of the input video
  • style
    (integer, optional) -- style ID 0-7 (default: 0, Japanese Manga)
  • video_fps
    (integer, optional) -- output frame rate, range [15, 25] (default: 15)
  • animate_emotion
    (boolean, optional) -- facial expression optimization (default: true)
  • min_len
    (integer, optional) -- output short-side pixels, 720 or 540 (default: 720)
  • use_SR
    (boolean, optional) -- super-resolution enhancement (default: false)
  • video_url
    (字符串,必填)-- 输入视频的公开HTTP/HTTPS链接
  • style
    (整数,可选)-- 风格ID 0-7(默认值:0,日式漫画)
  • video_fps
    (整数,可选)-- 输出帧率,取值范围 [15, 25](默认值:15)
  • animate_emotion
    (布尔值,可选)-- 面部表情优化(默认值:true)
  • min_len
    (整数,可选)-- 输出短边像素,可选720或540(默认值:720)
  • use_SR
    (布尔值,可选)-- 超分辨率增强(默认值:false)

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)

响应(任务创建)

  • output.task_id
    (string) -- use for polling, valid 24 hours
  • output.task_status
    (string) -- PENDING | RUNNING | SUSPENDED | SUCCEEDED | FAILED
  • request_id
    (string)
  • output.task_id
    (字符串)-- 用于轮询任务状态,有效期24小时
  • output.task_status
    (字符串)-- 任务状态:PENDING | RUNNING | SUSPENDED | SUCCEEDED | FAILED
  • request_id
    (字符串)

Response (task result)

响应(任务结果)

  • output.output_video_url
    (string) -- result video URL
  • output.task_status
    (string) -- final status
  • output.submit_time
    (string) -- task submission time
  • output.scheduled_time
    (string) -- task execution start time
  • output.end_time
    (string) -- task completion time
  • usage.duration
    (integer) -- video duration in seconds
  • usage.SR
    (integer) -- resolution used
  • output.output_video_url
    (字符串)-- 结果视频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

错误处理

ErrorLikely causeAction
401/403Missing or invalid
DASHSCOPE_API_KEY
Check env var or credentials file
400
InvalidParameter
Unsupported video format, bad dimensions, invalid styleValidate parameters
"does not support synchronous calls"Missing
X-DashScope-Async: enable
header
Add required header
429Rate limit or quotaRetry with backoff
错误可能原因解决措施
401/403缺少
DASHSCOPE_API_KEY
或密钥无效
检查环境变量或凭证文件
400
InvalidParameter
不支持的视频格式、尺寸不合法、风格参数无效校验输入参数
"does not support synchronous calls"缺少
X-DashScope-Async: enable
请求头
添加必填请求头
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

工作流程

  1. Confirm user intent: select desired artistic style from the 8 presets.
  2. Prepare video URL with valid format and dimensions.
  3. Configure parameters (style, fps, resolution, super-resolution).
  4. Create async task and poll for results.
  5. Download and save transformed video before URL expiration.
  1. 确认用户需求:从8种预设风格中选择目标艺术风格。
  2. 准备符合格式和尺寸要求的视频URL。
  3. 配置参数(风格、帧率、分辨率、超分辨率)。
  4. 创建异步任务并轮询获取结果。
  5. 在URL过期前下载并保存转换后的视频。

References

参考资料

  • See
    references/api_reference.md
    for full HTTP API details.
  • See
    references/sources.md
    for source links.
  • 完整HTTP API详情请查看
    references/api_reference.md
  • 源链接请查看
    references/sources.md