Claude Opus 5 is now live on CometAPI →
Q

Wan2.6

Mỗi Giây:$0.08
Ngày phát hành:May 31, 2026

Wan2.6 là một mô hình tạo video được thiết kế nhằm mang lại quá trình tổng hợp video ổn định và hiệu quả. Nó cung cấp chất lượng hình ảnh đáng tin cậy cùng khả năng tạo chuyển động mượt mà cho các nhiệm vụ tạo video nói chung.

Mới
Sử dụng thương mại

Thông số kỹ thuật của Wan 2.6

Hạng mụcBộ công cụ video Wan 2.6
Nhà cung cấpAlibaba / Tongyi Lab
Dòng mô hìnhWan 2.6
Thời điểm phát hànhThế hệ tháng 12 năm 2025
Loại đầu vàoVăn bản, hình ảnh, video tham chiếu, đầu vào âm thanh
Loại đầu raVideo kèm tùy chọn đồng bộ âm thanh
Chế độ cốt lõiVăn bản thành video (T2V), Ảnh thành video (I2V), Tham chiếu thành video (R2V)
Biến thể FlashI2V Flash, R2V Flash
Hỗ trợ độ phân giải720P và 1080P
Hỗ trợ độ dài2–15 giây (phụ thuộc quy trình)
Khả năng âm thanhTạo âm thanh tích hợp sẵn, tham chiếu giọng nói, đồng bộ khẩu hình
Hỗ trợ đa cảnh2–8 phân đoạn cảnh trong một quy trình
Hỗ trợ tham chiếuTối đa 5 tham chiếu (pha trộn ảnh/video tùy theo quy trình)
Quy trình APITạo tác vụ bất đồng bộ + thăm dò

Wan 2.6 là gì?

Wan 2.6 là hệ thống tạo sinh video đa phương thức của Alibaba, tập trung vào sản xuất định dạng ngắn có khả năng kiểm soát. Thay vì chỉ dựa vào lời nhắc, mô hình kết hợp lời nhắc văn bản, tham chiếu hình ảnh, video tham chiếu, điều kiện hóa âm thanh và xâu chuỗi cảnh để phục vụ quy trình làm việc của người sáng tạo. Nâng cấp lớn so với các bản Wan trước là đưa vào tính nhất quán dựa trên tham chiếu mạnh hơn và khả năng tạo dựng câu chuyện dài hơn.

Tính năng chính của Wan 2.6

  • Quy trình tham chiếu thành video: Người dùng có thể cung cấp tham chiếu hình ảnh hoặc video để duy trì tính nhất quán về nhân vật, phong cách và giọng nói xuyên suốt các lần tạo sinh.
  • Tạo dựng câu chuyện đa cảnh: Hỗ trợ xâu chuỗi nhiều lời nhắc để chuyển cảnh và phát triển cốt truyện trong một quy trình tạo sinh duy nhất.
  • Đồng bộ âm thanh tích hợp sẵn: Hỗ trợ tích hợp cho âm thanh tạo sinh, tải lên âm thanh tùy chỉnh và các quy trình đồng bộ khẩu hình.
  • Chế độ đầu vào linh hoạt: Hỗ trợ tạo sinh chỉ bằng lời nhắc, hoạt họa khung hình đầu tiên, và các quy trình dựa trên tham chiếu.
  • Biến thể Flash để lặp thử: Các phiên bản nhanh hơn cho phép thử nghiệm nhanh trước khi kết xuất cuối chất lượng cao.
  • Clip dài hơn: Thời lượng clip được kéo dài so với các thế hệ trước, hỗ trợ tạo nội dung có tính kể chuyện.

Hiệu năng benchmark của Wan 2.6

Tính minh bạch về benchmark chính thức của Wan 2.6 vẫn còn hạn chế; Alibaba đã công bố ít số liệu benchmark chuẩn hóa hơn so với các nhà cung cấp LLM văn bản. Phần lớn đánh giá đến từ thử nghiệm quy trình và so sánh trong hệ sinh thái hơn là bảng xếp hạng công khai. Các thử nghiệm từ cộng đồng nhất quán cho thấy:

  • Tính nhất quán nhân vật được cải thiện so với các bản Wan cũ.
  • Đồng bộ âm thanh-hình ảnh tốt hơn.
  • Tính liên tục đa cảnh mạnh hơn.
  • Điều kiện hóa tham chiếu đáng tin cậy hơn.

Do việc công bố benchmark còn thưa thớt, thử nghiệm trong môi trường sản xuất vẫn rất quan trọng trước khi triển khai.

Wan 2.6 so với các mô hình video khác

Tính năngWan 2.6Wan 2.7Veo-family models
Tạo âm thanh tích hợp sẵnMạnhMạnh hơnMạnh
Quy trình đa cảnhĐược cải thiệnVừa phải
Tham chiếu thành videoTập trung mạnhKiểm soát mạnh hơnVừa phải
Thời lượng clipTối đa 15sTương tự / phụ thuộc quy trìnhThay đổi
Hỗ trợ nhiều tham chiếuTối đa 5 tham chiếuQuy trình mở rộngVừa phải
Quy trình chỉnh sửaVừa phảiHỗ trợ chỉnh sửa tốt hơnMạnh

Hạn chế của Wan 2.6

  • Thời lượng clip ngắn vẫn hạn chế sản xuất dạng dài.
  • Cảnh chuyển động mạnh có thể vẫn xuất hiện bất ổn theo thời gian.
  • Quy trình phụ thuộc nhiều vào tham chiếu làm tăng độ phức tạp thiết lập.
  • Công bố benchmark công khai vẫn hạn chế.
  • Chuỗi tạo sinh bất đồng bộ làm tăng độ phức tạp tích hợp.

Trường hợp sử dụng tiêu biểu

  1. Video marketing nhất quán về nhân vật.
  2. Clip mạng xã hội đa cảnh.
  3. Hoạt họa avatar cho người sáng tạo.
  4. Video sản phẩm dựa trên tham chiếu.
  5. Kể chuyện bằng AI với âm thanh được đồng bộ.
  6. Nội dung thương hiệu cần bảo toàn nhận diện.

Câu Hỏi Thường Gặp

Giá cả cho Wan2.6

Khám phá mức giá cạnh tranh cho Wan2.6, được thiết kế để phù hợp với nhiều ngân sách và nhu cầu sử dụng khác nhau. Các gói linh hoạt của chúng tôi đảm bảo bạn chỉ trả tiền cho những gì bạn sử dụng, giúp dễ dàng mở rộng quy mô khi yêu cầu của bạn tăng lên. Khám phá cách Wan2.6 có thể nâng cao các dự án của bạn trong khi vẫn kiểm soát được chi phí.

Wan Video Generation Pricing

Pricing (Per Second)

Model720p1080p
wan2.6$0.08$0.12
wan2.7$0.08$0.12

💡 Billed per second. Total cost = price per second × video duration (seconds).

Mã mẫu và API cho Wan2.6

Truy cập mã mẫu toàn diện và tài nguyên API cho Wan2.6 để tối ưu hóa quy trình tích hợp của bạn. Tài liệu chi tiết của chúng tôi cung cấp hướng dẫn từng bước, giúp bạn khai thác toàn bộ tiềm năng của Wan2.6 trong các dự án của mình.

# Create a video with wan2.6
# Step 1: Submit the video generation request
echo "Submitting video generation request..."
response=$(curl -s https://api.cometapi.com/v1/videos \
  -H "Authorization: Bearer $COMETAPI_KEY" \
  -F "model=wan2.6" \
  -F "prompt=Create a cinematic multi-shot chase across a moonlit desert market. Shot 1 [0-2s]: a wide establishing view of lanterns and dust in the air. Shot 2 [2-4s]: a small brass robot darts between fabric stalls. Shot 3 [4-5s]: close-up on the robot finding a glowing compass." \
  -F "seconds=5" \
  -F "size=1280x720")

echo "Response: $response"

# Extract video_id from response (handle JSON with spaces like "id": "xxx")
video_id=$(echo "$response" | tr -d '
' | sed 's/.*"id"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/')
echo "Video ID: $video_id"

# Step 2: Poll for progress until 100%
echo ""
echo "Checking video generation progress..."
while true; do
  status_response=$(curl -s "https://api.cometapi.com/v1/videos/$video_id" \
    -H "Authorization: Bearer $COMETAPI_KEY")

  progress=$(echo "$status_response" | grep -o '"progress"[[:space:]]*:[[:space:]]*"\?[^",}]*"\?' | head -1 | sed 's/.*:[[:space:]]*"\?//;s/"$//')
  status=$(echo "$status_response" | grep -o '"status"[[:space:]]*:[[:space:]]*"[^"]*"' | head -1 | sed 's/.*"status"[[:space:]]*:[[:space:]]*"//;s/"$//')

  echo "Progress: $progress, Status: $status"

  if [ "$status" = "FAILURE" ] || [ "$status" = "failed" ] || [ "$status" = "error" ]; then
    echo "Video generation failed!"
    exit 1
  fi

  if [ "$progress" = "100%" ] || [ "$progress" = "100" ] || [ "$status" = "completed" ] || [ "$status" = "success" ]; then
    echo "Video generation completed!"
    break
  fi

  sleep 10
done

# Step 3: Download the video to output directory
echo ""
echo "Downloading video to ./output/$video_id.mp4..."
mkdir -p ./output
curl -s "https://api.cometapi.com/v1/videos/$video_id/content" \
  -H "Authorization: Bearer $COMETAPI_KEY" \
  -o "./output/$video_id.mp4"

if [ -f "./output/$video_id.mp4" ]; then
  echo "Video saved to ./output/$video_id.mp4"
  ls -la "./output/$video_id.mp4"
else
  echo "Failed to download video"
  exit 1
fi

cURL Code Example

# Create a video with wan2.6
# Step 1: Submit the video generation request
echo "Submitting video generation request..."
response=$(curl -s https://api.cometapi.com/v1/videos \
  -H "Authorization: Bearer $COMETAPI_KEY" \
  -F "model=wan2.6" \
  -F "prompt=Create a cinematic multi-shot chase across a moonlit desert market. Shot 1 [0-2s]: a wide establishing view of lanterns and dust in the air. Shot 2 [2-4s]: a small brass robot darts between fabric stalls. Shot 3 [4-5s]: close-up on the robot finding a glowing compass." \
  -F "seconds=5" \
  -F "size=1280x720")

echo "Response: $response"

# Extract video_id from response (handle JSON with spaces like "id": "xxx")
video_id=$(echo "$response" | tr -d '\n' | sed 's/.*"id"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/')
echo "Video ID: $video_id"

# Step 2: Poll for progress until 100%
echo ""
echo "Checking video generation progress..."
while true; do
  status_response=$(curl -s "https://api.cometapi.com/v1/videos/$video_id" \
    -H "Authorization: Bearer $COMETAPI_KEY")
  
  progress=$(echo "$status_response" | grep -o '"progress"[[:space:]]*:[[:space:]]*"\?[^",}]*"\?' | head -1 | sed 's/.*:[[:space:]]*"\?//;s/"$//')
  status=$(echo "$status_response" | grep -o '"status"[[:space:]]*:[[:space:]]*"[^"]*"' | head -1 | sed 's/.*"status"[[:space:]]*:[[:space:]]*"//;s/"$//')
  
  echo "Progress: $progress, Status: $status"
  
  if [ "$status" = "FAILURE" ] || [ "$status" = "failed" ] || [ "$status" = "error" ]; then
    echo "Video generation failed!"
    exit 1
  fi
  
  if [ "$progress" = "100%" ] || [ "$progress" = "100" ] || [ "$status" = "completed" ] || [ "$status" = "success" ]; then
    echo "Video generation completed!"
    break
  fi
  
  sleep 10
done

# Step 3: Download the video to output directory
echo ""
echo "Downloading video to ./output/$video_id.mp4..."
mkdir -p ./output
curl -s "https://api.cometapi.com/v1/videos/$video_id/content" \
  -H "Authorization: Bearer $COMETAPI_KEY" \
  -o "./output/$video_id.mp4"

if [ -f "./output/$video_id.mp4" ]; then
  echo "Video saved to ./output/$video_id.mp4"
  ls -la "./output/$video_id.mp4"
else
  echo "Failed to download video"
  exit 1
fi

Python Code Example

# Create a video with wan2.6 using raw HTTP requests
import os
import time
import requests

api_key = os.environ.get("COMETAPI_KEY")
base_url = "https://api.cometapi.com/v1"
headers = {"Authorization": f"Bearer {api_key}"}

# Step 1: Submit the video generation request
print("Submitting video generation request...")
response = requests.post(
    f"{base_url}/videos",
    headers=headers,
    files={
        "model": (None, "wan2.6"),
        "prompt": (None, "Create a cinematic multi-shot chase across a moonlit desert market. Shot 1 [0-2s]: a wide establishing view of lanterns and dust in the air. Shot 2 [2-4s]: a small brass robot darts between fabric stalls. Shot 3 [4-5s]: close-up on the robot finding a glowing compass."),
        "seconds": (None, "5"),
        "size": (None, "1280x720"),
    },
)

result = response.json()
print(f"Response: {result}")

video_id = result.get("id") or result.get("task_id")
print(f"Video ID: {video_id}")

# Step 2: Poll for progress until 100%
print("\nChecking video generation progress...")
while True:
    try:
        status_response = requests.get(f"{base_url}/videos/{video_id}", headers=headers)
        status_result = status_response.json()

        data = status_result.get("data") or status_result
        progress = data.get("progress", "0%")
        status = data.get("status", "unknown")

        print(f"Progress: {progress}, Status: {status}")

        if status in ["FAILURE", "failed", "error"]:
            print("Video generation failed!")
            print(status_result)
            exit(1)

        if progress == "100%" or progress == 100 or status in ["completed", "success"]:
            print("Video generation completed!")
            break
    except Exception as e:
        print(f"Temporary error: {e}, retrying...")

    time.sleep(10)

# Step 3: Download the video to output directory
print(f"\nDownloading video to ./output/{video_id}.mp4...")
os.makedirs("./output", exist_ok=True)

video_response = requests.get(f"{base_url}/videos/{video_id}/content", headers=headers)

output_path = f"./output/{video_id}.mp4"
with open(output_path, "wb") as f:
    f.write(video_response.content)

if os.path.exists(output_path):
    file_size = os.path.getsize(output_path)
    print(f"Video saved to {output_path}")
    print(f"File size: {file_size} bytes")
else:
    print("Failed to download video")
    exit(1)

JavaScript Code Example

// Create a video with wan2.6 using raw HTTP requests
import fs from "fs";
import path from "path";

const apiKey = process.env.COMETAPI_KEY;
const baseUrl = "https://api.cometapi.com/v1";
const headers = { Authorization: `Bearer ${apiKey}` };

function sleep(ms) {
  return new Promise((resolve) => setTimeout(resolve, ms));
}

// Step 1: Submit the video generation request
console.log("Submitting video generation request...");
const formData = new FormData();
formData.append("model", "wan2.6");
formData.append("prompt", "Create a cinematic multi-shot chase across a moonlit desert market. Shot 1 [0-2s]: a wide establishing view of lanterns and dust in the air. Shot 2 [2-4s]: a small brass robot darts between fabric stalls. Shot 3 [4-5s]: close-up on the robot finding a glowing compass.");
formData.append("seconds", "5");
formData.append("size", "1280x720");

const submitResponse = await fetch(`${baseUrl}/videos`, {
  method: "POST",
  headers,
  body: formData,
});

const result = await submitResponse.json();
console.log("Response:", JSON.stringify(result, null, 2));

const videoId = result.id || result.task_id;
console.log("Video ID:", videoId);

// Step 2: Poll for progress until 100%
console.log("\nChecking video generation progress...");
while (true) {
  try {
    const statusResponse = await fetch(`${baseUrl}/videos/${videoId}`, { headers });
    const statusResult = await statusResponse.json();
    const data = statusResult.data || statusResult;
    const progress = data.progress || "0%";
    const status = data.status || "unknown";

    console.log(`Progress: ${progress}, Status: ${status}`);

    if (status === "FAILURE" || status === "failed" || status === "error") {
      console.log("Video generation failed!");
      console.log(JSON.stringify(statusResult, null, 2));
      process.exit(1);
    }

    if (progress === "100%" || progress === 100 || status === "completed" || status === "success") {
      console.log("Video generation completed!");
      break;
    }
  } catch (e) {
    console.log(`Temporary error: ${e.message}, retrying...`);
  }

  await sleep(10000);
}

// Step 3: Download the video to output directory
console.log(`\nDownloading video to ./output/${videoId}.mp4...`);
fs.mkdirSync("./output", { recursive: true });

const videoResponse = await fetch(`${baseUrl}/videos/${videoId}/content`, { headers });
const outputPath = path.join("./output", `${videoId}.mp4`);
fs.writeFileSync(outputPath, Buffer.from(await videoResponse.arrayBuffer()));

if (fs.existsSync(outputPath)) {
  const stats = fs.statSync(outputPath);
  console.log(`Video saved to ${outputPath}`);
  console.log(`File size: ${stats.size} bytes`);
} else {
  console.log("Failed to download video");
  process.exit(1);
}

Các phiên bản của Wan2.6

Lý do Wan2.6 có nhiều snapshot có thể bao gồm các yếu tố tiềm năng như: sự thay đổi đầu ra sau các bản cập nhật cần các snapshot cũ để đảm bảo tính nhất quán, cung cấp cho nhà phát triển thời gian chuyển tiếp để thích ứng và di chuyển, cũng như các snapshot khác nhau tương ứng với các endpoint toàn cầu hoặc khu vực nhằm tối ưu hóa trải nghiệm người dùng. Để biết chi tiết về sự khác biệt giữa các phiên bản, vui lòng tham khảo tài liệu chính thức.

Version
wan2.6