Claude Opus 5 is now live on CometAPI →
Q

Wan2.6

Setiap Saat:$0.08
Dilancarkan:May 31, 2026

Wan2.6 ialah model penjanaan video yang direka untuk sintesis video yang stabil dan cekap. Ia menawarkan kualiti visual yang boleh dipercayai serta penjanaan pergerakan yang lancar bagi tugas penghasilan video umum.

Baru
Penggunaan komersial

Spesifikasi Teknikal Wan 2.6

ItemWan 2.6 Video Suite
ProviderAlibaba / Tongyi Lab
Model familyKeluarga model Wan 2.6
Release timeframeGenerasi Disember 2025
Input typesTeks, imej, video rujukan, input audio
Output typeVideo dengan audio segerak pilihan
Core modesTeks ke Video (T2V), Imej ke Video (I2V), Rujukan ke Video (R2V)
Flash variantsI2V Flash, R2V Flash
Resolution support720P dan 1080P
Duration support2–15 saat (bergantung pada aliran kerja)
Audio capabilitiesPenjanaan audio asli, rujukan suara, penyegerakan bibir
Multi-shot support2–8 segmen adegan dalam satu aliran kerja
Reference supportSehingga 5 rujukan (campuran imej/video bergantung pada aliran kerja)
API workflowPenciptaan tugas asinkron + polling

Apakah Wan 2.6?

Wan 2.6 ialah sistem penjanaan video multimodal Alibaba yang memfokus pada penghasilan bentuk pendek yang boleh dikawal. Bukannya semata-mata dipacu oleh gesaan, model ini menggabungkan gesaan teks, rujukan imej, video rujukan, pengkondisian audio, dan rantaian adegan untuk aliran kerja pencipta. Naik taraf utama berbanding keluaran Wan terdahulu ialah pengenalan konsistensi berasaskan rujukan yang lebih kukuh dan penjanaan naratif yang lebih panjang.

Ciri Utama Wan 2.6

  • Aliran kerja rujukan-ke-video: Pengguna boleh membekalkan rujukan imej atau video untuk mengekalkan identiti watak, gaya, dan kesinambungan suara merentas penjanaan.
  • Penjanaan naratif berbilang shot: Menyokong merantaikan beberapa gesaan bersama bagi peralihan adegan dan perkembangan cerita dalam satu aliran kerja penjanaan.
  • Penyegerakan audio asli: Sokongan terbina untuk audio terjana, muat naik audio tersuai, dan aliran kerja penyegerakan bibir.
  • Mod input fleksibel: Menyokong penjanaan berasaskan gesaan sahaja, animasi bingkai pertama, dan aliran kerja berasaskan rujukan.
  • Varian Flash untuk iterasi: Versi yang lebih pantas membolehkan pengujian pantas sebelum render berkualiti tinggi terakhir.
  • Klip lebih panjang: Tempoh klip dipanjangkan berbanding generasi terdahulu, menyokong penciptaan kandungan naratif.

Prestasi Penanda Aras Wan 2.6

Ketelusan penanda aras formal untuk Wan 2.6 masih terhad; Alibaba menerbitkan angka penanda aras piawai yang lebih sedikit berbanding penyedia LLM teks. Kebanyakan penilaian datang daripada pengujian aliran kerja dan perbandingan ekosistem berbanding papan kedudukan awam. Ujian komuniti secara konsisten menonjolkan:

  • Konsistensi watak yang dipertingkat berbanding keluaran Wan yang lebih lama.
  • Penyegerakan audio-video yang lebih baik.
  • Kesinambungan berbilang shot yang lebih kukuh.
  • Pengkondisian rujukan yang lebih boleh dipercayai.

Disebabkan penerbitan penanda aras yang jarang, pengujian produksi kekal penting sebelum pelaksanaan.

Wan 2.6 berbanding Model Video Lain

FeatureWan 2.6Wan 2.7Model keluarga Veo
Penjanaan audio asliKuatLebih kuatKuat
Aliran kerja berbilang shotYaDipertingkatSederhana
Rujukan-ke-videoPenekanan kuatKawalan lebih kuatSederhana
Tempoh klipSehingga 15 saatSerupa / bergantung pada aliran kerjaPelbagai
Sokongan pelbagai rujukanSehingga 5 rujukanAliran kerja diperluasSederhana
Aliran kerja penyuntinganSederhanaSokongan penyuntingan yang lebih baikKuat

Keterbatasan Wan 2.6

  • Tempoh klip yang pendek masih mengehadkan penghasilan bentuk panjang.
  • Adegan bergerak tinggi mungkin masih menunjukkan ketidakstabilan temporal.
  • Aliran kerja yang sangat bergantung pada rujukan meningkatkan kerumitan persediaan.
  • Pelaporan penanda aras awam kekal terhad.
  • Saluran paip penjanaan asinkron meningkatkan kerumitan integrasi.

Kes Penggunaan Representatif

  1. Video pemasaran dengan konsistensi watak.
  2. Klip media sosial berbilang adegan.
  3. Animasi avatar pencipta.
  4. Video produk berasaskan rujukan.
  5. Penceritaan AI dengan audio segerak.
  6. Kandungan jenama yang memerlukan pemeliharaan identiti.

Soalan Lazim

Harga untuk Wan2.6

Terokai harga yang kompetitif untuk Wan2.6, direka bentuk untuk memenuhi pelbagai bajet dan keperluan penggunaan. Pelan fleksibel kami memastikan anda hanya membayar untuk apa yang anda gunakan, menjadikannya mudah untuk meningkatkan skala apabila keperluan anda berkembang. Temui bagaimana Wan2.6 boleh meningkatkan projek anda sambil mengekalkan kos yang terurus.

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).

Kod contoh dan API untuk Wan2.6

Akses kod sampel yang komprehensif dan sumber API untuk Wan2.6 bagi memperlancar proses integrasi anda. Dokumentasi terperinci kami menyediakan panduan langkah demi langkah, membantu anda memanfaatkan potensi penuh Wan2.6 dalam projek anda.

# 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);
}

Versi Wan2.6

Sebab Wan2.6 mempunyai berbilang snapshot mungkin merangkumi faktor berpotensi seperti variasi output selepas kemas kini yang memerlukan snapshot lama untuk konsistensi, menyediakan tempoh peralihan untuk penyesuaian dan migrasi kepada pembangun, serta snapshot berbeza yang sepadan dengan endpoint global atau serantau untuk mengoptimumkan pengalaman pengguna. Untuk perbezaan terperinci antara versi, sila rujuk dokumentasi rasmi.

Version
wan2.6