全部产品
Search
文档中心

Alibaba Cloud Model Studio:Wan - referensi API first-and-last-frames-to-video

更新时间:Jan 09, 2026

Model Wan kf2v menghasilkan video dengan transisi halus berdasarkan citra frame pertama, citra frame terakhir, dan prompt teks. Fitur yang didukung meliputi:

  • Spesifikasi video: Durasi video tetap 5 detik dan resolusi tertentu (480P, 720P, atau 1080P).

  • Optimisasi prompt cerdas: Secara otomatis menulis ulang prompt input dan secara signifikan meningkatkan hasil untuk prompt pendek.

  • Lainnya: Anda dapat memilih apakah akan menambahkan watermark "AI Generated".

Tautan cepat: Coba secara online di situs resmi Wan

Catatan

Fitur di situs resmi Wan mungkin berbeda dari fitur yang didukung oleh API. Dokumen ini menjelaskan kemampuan API dan diperbarui seiring perubahan fitur.

Ikhtisar model

Fitur

Contoh input

Video Keluaran

Citra bingkai pertama

Citra frame terakhir

Prompt

Generasi video dari frame pertama dan terakhir

first_frame

last_frame

Gaya realistis, seekor kucing hitam kecil menatap langit dengan rasa ingin tahu, kamera secara bertahap naik dari ketinggian mata, dan akhirnya menangkap tatapan ingin tahunya dari sudut pandang atas ke bawah.

Model

Deskripsi

Spesifikasi video output

wan2.2-kf2v-flash Recommended

Wan 2.2 Flash Edition (video tanpa suara)

50% lebih cepat daripada model 2.1 dengan stabilitas dan tingkat keberhasilan yang lebih baik.

Opsi resolusi: 480P, 720P, 1080P

Durasi video: 5 detik

Spesifikasi tetap: 30 fps, MP4 (encoding H.264)

wan2.1-kf2v-plus

Wan 2.1 Professional Edition (video tanpa suara)

Gerakan kompleks, fisika realistis, dan visual detail.

Opsi resolusi: 720P

Durasi video: 5 detik

Spesifikasi tetap: 30 fps, MP4 (encoding H.264)

Catatan

Sebelum melakukan panggilan, lihat Daftar model dan harga untuk model yang didukung di setiap wilayah.

Prasyarat

Sebelum melakukan panggilan, dapatkan Kunci API dan atur Kunci API sebagai Variabel lingkungan. Jika Anda menggunakan SDK untuk melakukan panggilan, instal SDK DashScope untuk Python atau Java.

Penting

Wilayah Beijing dan Singapura memiliki Kunci API dan titik akhir permintaan yang terpisah. Jangan menggunakannya secara bergantian. Panggilan lintas wilayah akan mengakibatkan kegagalan autentikasi atau kesalahan layanan.

Panggilan HTTP

Karena tugas image-to-video memakan waktu dan biasanya memerlukan 1 hingga 5 menit, API menggunakan panggilan asinkron. Prosesnya melibatkan dua langkah inti: Buat tugas → Polling hasil. Langkah-langkahnya adalah sebagai berikut:

Waktu aktual yang dibutuhkan tergantung pada jumlah tugas dalam antrian dan status layanan. Harap bersabar saat menunggu hasil.

Langkah 1: Buat tugas dan dapatkan ID tugas

Singapura: POST https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/image2video/video-synthesis

Beijing: POST https://dashscope.aliyuncs.com/api/v1/services/aigc/image2video/video-synthesis

Catatan
  • Setelah tugas dibuat, gunakan task_id yang dikembalikan untuk mengkueri hasil. `task_id` berlaku selama 24 jam. Jangan membuat tugas duplikat. Gunakan polling untuk mengambil hasil.

Parameter permintaan

Generasi video dari frame pertama dan terakhir

Hasilkan video berdasarkan frame pertama, frame terakhir, dan prompt.

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/image2video/video-synthesis' \
    -H 'X-DashScope-Async: enable' \
    -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
    -H 'Content-Type: application/json' \
    -d '{
    "model": "wan2.2-kf2v-flash",
    "input": {
        "first_frame_url": "https://wanx.alicdn.com/material/20250318/first_frame.png",
        "last_frame_url": "https://wanx.alicdn.com/material/20250318/last_frame.png",
        "prompt": "Realistic style, a small black cat looks up at the sky curiously, the camera gradually rises from eye level, and finally captures its curious gaze from a top-down view."
    },
    "parameters": {
        "resolution": "480P",
        "prompt_extend": true
    }
}'

Gunakan prompt negatif

Gunakan parameter `negative_prompt` untuk menentukan bahwa video yang dihasilkan tidak boleh mengandung elemen "people".

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/image2video/video-synthesis' \
    -H 'X-DashScope-Async: enable' \
    -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
    -H 'Content-Type: application/json' \
    -d '{
    "model": "wan2.1-kf2v-plus",
    "input": {
        "first_frame_url": "https://wanx.alicdn.com/material/20250318/first_frame.png",
        "last_frame_url": "https://wanx.alicdn.com/material/20250318/last_frame.png",
        "prompt": "Realistic style, a small black cat looks up at the sky curiously, the camera gradually rises from eye level, and finally captures its curious gaze from a top-down view.",
        "negative_prompt": "people"
    },
    "parameters": {
        "resolution": "720P",
        "prompt_extend": true
    }
}'
Header

Content-Type string (Wajib)

Tipe konten permintaan. Atur ke application/json.

Authorization string (Wajib)

Kredensial autentikasi. API ini menggunakan Kunci API Model Studio untuk autentikasi. Contoh: `Bearer sk-xxxx`.

X-DashScope-Async string (Wajib)

Parameter konfigurasi untuk pemrosesan asinkron. Permintaan HTTP hanya mendukung pemrosesan asinkron. Anda harus mengatur parameter ini ke enable.

Penting

Jika header permintaan ini tidak ada, pesan kesalahan `current user api does not support synchronous calls` dikembalikan.

Body permintaan

model string (Wajib)

Nama model. Contoh: wan2.2-kf2v-flash.

Untuk informasi lebih lanjut, lihat Model.

input object (Wajib)

Informasi input dasar, seperti prompt.

Properti

prompt string (Opsional)

Prompt teks. Prompt mendukung bahasa Mandarin dan Inggris. Panjangnya tidak boleh melebihi 800 karakter. Setiap karakter Mandarin atau huruf dihitung sebagai satu karakter. Karakter berlebih akan dipotong secara otomatis.

Jika subjek dan adegan berubah secara signifikan antara frame pertama dan terakhir, jelaskan proses transisinya, seperti pergerakan kamera (kamera bergerak ke kiri) atau pergerakan subjek (orang berlari maju).

Contoh: Seekor kucing hitam kecil menatap langit dengan rasa ingin tahu. Kamera secara bertahap naik dari ketinggian mata dan akhirnya menangkap tatapan ingin tahunya dari sudut pandang atas ke bawah.

Untuk informasi lebih lanjut tentang penggunaan prompt, lihat Panduan prompt text-to-video/image-to-video.

negative_prompt string (Opsional)

Prompt negatif. Ini menggambarkan konten yang tidak ingin Anda tampilkan dalam video, sehingga memungkinkan Anda membatasi konten video tersebut.

Mendukung bahasa Mandarin dan Inggris. Panjangnya tidak boleh melebihi 500 karakter. Karakter berlebih akan dipotong secara otomatis.

Contoh: resolusi rendah, error, kualitas terburuk, kualitas rendah, cacat bentuk, jari ekstra, proporsi buruk.

first_frame_url string (Wajib)

URL citra frame pertama. Rasio aspek video output sesuai dengan rasio aspek citra frame pertama.

URL harus berupa alamat yang dapat diakses publik dan mendukung protokol HTTP atau HTTPS.

Persyaratan citra:

  • Format citra: JPEG, JPG, PNG (saluran alfa tidak didukung), BMP, atau WEBP.

  • Resolusi citra: Lebar dan tinggi harus antara 360 hingga 2000 piksel.

  • Ukuran file: Tidak lebih dari 10 MB.

last_frame_url string (Wajib)

URL citra frame terakhir.

URL harus dapat diakses publik dan mendukung protokol HTTP atau HTTPS.

Batasan citra

  • Format citra: JPEG, JPG, PNG (saluran alfa tidak didukung), BMP, atau WEBP.

  • Resolusi citra: Lebar dan tinggi harus antara 360 hingga 2000 piksel. Resolusi citra frame terakhir dapat berbeda dari citra frame pertama. Resolusi tidak perlu sama.

  • Ukuran file: Tidak lebih dari 10 MB.

parameters object (Opsional)

Parameter pemrosesan video.

Properti

resolution string (Opsional)

Penting

Resolusi secara langsung memengaruhi biaya. Untuk model yang sama, biayanya adalah sebagai berikut: 1080P > 720P > 480P. Sebelum melakukan panggilan, konfirmasi harga model.

Tingkat resolusi untuk video yang dihasilkan. Parameter ini hanya menyesuaikan definisi video, yaitu jumlah total piksel, dan tidak mengubah rasio aspeknya. Rasio aspek video sesuai dengan rasio aspek citra frame pertama yang ditentukan oleh parameter first_frame_url.

Nilai default dan nilai enumerasi yang tersedia untuk parameter ini bergantung pada parameter `model`, sebagaimana dijelaskan dalam daftar berikut:

  • wan2.2-kf2v-flash: Nilai opsional adalah 480P, 720P, dan 1080P. Nilai default adalah 720P.

  • wan2.1-kf2v-plus: Nilai opsional adalah 720P. Nilai default adalah 720P.

Contoh: 720P.

duration integer (Opsional)

Penting

Durasi secara langsung memengaruhi biaya, yang ditagih per detik. Sebelum melakukan panggilan, konfirmasi harga model.

Durasi video yang dihasilkan dalam detik. Parameter ini saat ini tetap pada 5 dan tidak dapat diubah. Model selalu menghasilkan video berdurasi 5 detik.

prompt_extend bool (Opsional)

Menentukan apakah akan mengaktifkan penulisan ulang prompt. Jika parameter ini diaktifkan, model bahasa besar (LLM) akan menulis ulang prompt input. Ini secara signifikan meningkatkan hasil untuk prompt pendek tetapi meningkatkan waktu pemrosesan.

  • true (default)

  • false

Contoh: true.

watermark bool (Opsional)

Menentukan apakah akan menambahkan watermark 'AI-generated' di pojok kanan bawah citra.

  • false (default)

  • true

Contoh: false.

seed integer (Opsional)

Seed bilangan acak. Nilainya harus berupa bilangan bulat dalam rentang [0, 2147483647].

Jika parameter ini tidak ditentukan, sistem akan secara otomatis menghasilkan seed acak. Untuk meningkatkan reproduktibilitas hasil, Anda dapat mengatur nilai seed tetap.

Perhatikan bahwa karena generasi model bersifat probabilistik, menggunakan seed yang sama tidak menjamin hasil yang identik.

Contoh: 12345.

Parameter respons

Respons berhasil

Simpan `task_id` untuk mengkueri status dan hasil tugas.

{
    "output": {
        "task_status": "PENDING",
        "task_id": "0385dc79-5ff8-4d82-bcb6-xxxxxx"
    },
    "request_id": "4909100c-7b5a-9f92-bfe5-xxxxxx"
}

Respons kesalahan

Pembuatan tugas gagal. Untuk informasi lebih lanjut, lihat Pesan kesalahan untuk menyelesaikan masalah.

{
    "code": "InvalidApiKey",
    "message": "No API-key provided.",
    "request_id": "7438d53d-6eb8-4596-8835-xxxxxx"
}

output object

Informasi output tugas.

Properti

task_id string

ID tugas. Kueri berlaku selama 24 jam.

task_status string

Status tugas.

Enumerasi

  • PENDING

  • RUNNING

  • SUCCEEDED

  • FAILED

  • CANCELED

  • UNKNOWN: Tugas tidak ada atau statusnya tidak diketahui.

request_id string

ID permintaan unik. Anda dapat menggunakan ID ini untuk melacak dan memecahkan masalah.

code string

Kode kesalahan. Dikembalikan hanya ketika permintaan gagal. Untuk informasi lebih lanjut, lihat Pesan kesalahan.

message string

Pesan kesalahan detail. Dikembalikan hanya ketika permintaan gagal. Untuk informasi lebih lanjut, lihat Pesan kesalahan.

Langkah 2: Kueri hasil berdasarkan ID tugas

Singapura: GET https://dashscope-intl.aliyuncs.com/api/v1/tasks/{task_id}

Beijing: GET https://dashscope.aliyuncs.com/api/v1/tasks/{task_id}

Catatan
  • Saran polling: Generasi video memerlukan beberapa menit. Kami menyarankan Anda menggunakan mekanisme polling dan mengatur interval kueri yang wajar, misalnya 15 detik, untuk mengambil hasil.

  • Transisi status tugas: PENDING → RUNNING → SUCCEEDED atau FAILED.

  • Tautan hasil: Setelah tugas berhasil, tautan video dikembalikan. Tautan tersebut berlaku selama 24 jam. Setelah Anda mengambil tautan tersebut, Anda harus segera mengunduh dan menyimpan video ke layanan penyimpanan permanen, seperti Object Storage Service (OSS).

  • Validitas `task_id`: 24 jam. Setelah periode ini, Anda tidak dapat mengkueri hasil, dan API mengembalikan status tugas UNKNOWN.

Parameter permintaan

Kueri hasil tugas

Ganti 86ecf553-d340-4e21-xxxxxxxxx dengan ID tugas aktual.

Kunci API bersifat spesifik wilayah. Buat Kunci API.
Untuk model di wilayah Beijing, ganti `base_url` dengan `https://dashscope.aliyuncs.com/api/v1/tasks/86ecf553-d340-4e21-xxxxxxxxx`
curl -X GET https://dashscope-intl.aliyuncs.com/api/v1/tasks/86ecf553-d340-4e21-xxxxxxxxx \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"
Header

Authorization string (Wajib)

Kredensial autentikasi. API ini menggunakan Kunci API Model Studio untuk autentikasi. Contoh: `Bearer sk-xxxx`.

Parameter jalur

task_id string (Wajib)

ID tugas.

Parameter respons

Tugas berhasil

URL video hanya disimpan selama 24 jam dan secara otomatis dihapus setelah periode ini. Anda harus segera menyimpan video yang dihasilkan.

{
    "request_id": "ec016349-6b14-9ad6-8009-xxxxxx",
    "output": {
        "task_id": "3f21a745-9f4b-4588-b643-xxxxxx",
        "task_status": "SUCCEEDED",
        "submit_time": "2025-04-18 10:36:58.394",
        "scheduled_time": "2025-04-18 10:37:13.802",
        "end_time": "2025-04-18 10:45:23.004",
        "video_url": "https://dashscope-result-wlcb.oss-cn-wulanchabu.aliyuncs.com/xxx.mp4?xxxxx",
        "orig_prompt": "Realistic style, a small black cat looks up at the sky curiously, the camera gradually rises from eye level, and finally captures its curious gaze from a top-down view.",
        "actual_prompt": "Realistic style, a small black cat looks up at the sky curiously, the camera gradually rises from eye level, and finally captures its curious gaze from a top-down view. The cat's yellow eyes are bright and expressive, its fur is smooth, and its whiskers are clearly visible. The background is a simple light-colored wall, highlighting the cat's black silhouette. A close-up shot emphasizes the changes in the cat's expression and the details of its eyes."
    },
    "usage": {
        "video_duration": 5,
        "video_count": 1,
        "SR": 480
    }
}

Tugas gagal

Jika tugas gagal, `task_status` diatur ke `FAILED`, dan kode serta pesan kesalahan disediakan. Untuk informasi lebih lanjut, lihat Pesan kesalahan untuk menyelesaikan masalah.

{
    "request_id": "e5d70b02-ebd3-98ce-9fe8-759d7d7b107d",
    "output": {
        "task_id": "86ecf553-d340-4e21-af6e-a0c6a421c010",
        "task_status": "FAILED",
        "code": "InvalidParameter",
        "message": "The size is not match xxxxxx"
    }
}

Kueri tugas kedaluwarsa

`task_id` berlaku selama 24 jam. Setelah periode ini, kueri gagal dan pesan kesalahan berikut dikembalikan.

{
    "request_id": "a4de7c32-7057-9f82-8581-xxxxxx",
    "output": {
        "task_id": "502a00b1-19d9-4839-a82f-xxxxxx",
        "task_status": "UNKNOWN"
    }
}

output object

Informasi output tugas.

Properti

task_id string

ID tugas. Kueri berlaku selama 24 jam.

task_status string

Status tugas.

Enumerasi

  • PENDING

  • RUNNING

  • SUCCEEDED

  • FAILED

  • CANCELED

  • UNKNOWN: Tugas tidak ada atau statusnya tidak diketahui.

Transisi status selama polling:

  • PENDING → RUNNING → SUCCEEDED atau FAILED.

  • Status kueri pertama biasanya PENDING atau RUNNING.

  • Jika status berubah menjadi SUCCEEDED, respons berisi URL video yang dihasilkan.

  • Jika statusnya FAILED, periksa pesan kesalahan dan coba lagi.

submit_time string

Waktu saat tugas dikirim. Waktu dalam zona waktu UTC+8. Formatnya adalah YYYY-MM-DD HH:mm:ss.SSS.

scheduled_time string

Waktu saat tugas mulai berjalan. Waktu dalam zona waktu UTC+8. Formatnya adalah YYYY-MM-DD HH:mm:ss.SSS.

end_time string

Waktu saat tugas selesai. Waktu dalam zona waktu UTC+8. Formatnya adalah YYYY-MM-DD HH:mm:ss.SSS.

video_url string

URL video. Parameter ini dikembalikan hanya jika `task_status` adalah `SUCCEEDED`.

Tautan berlaku selama 24 jam. Anda dapat menggunakan URL ini untuk mengunduh video. Video dalam format MP4 dan menggunakan encoding H.264.

orig_prompt string

Prompt input asli. Ini sesuai dengan parameter permintaan prompt.

actual_prompt string

Jika penulisan ulang prompt diaktifkan, parameter ini mengembalikan prompt yang dioptimalkan aktual yang digunakan. Jika fitur ini dinonaktifkan, parameter ini tidak dikembalikan.

code string

Kode kesalahan. Dikembalikan hanya ketika permintaan gagal. Untuk informasi lebih lanjut, lihat Pesan kesalahan.

message string

Pesan kesalahan detail. Dikembalikan hanya ketika permintaan gagal. Untuk informasi lebih lanjut, lihat Pesan kesalahan.

usage object

Statistik untuk output. Hanya hasil yang berhasil yang dihitung.

Properti

video_duration integer

Durasi video yang dihasilkan dalam detik. Nilai enumerasi adalah 5. Rumus penagihan: Biaya = Durasi video dalam detik × Harga satuan.

video_count integer

Jumlah video yang dihasilkan. Ini tetap pada 1.

video_ratio string

Nilai ini saat ini hanya dikembalikan oleh model 2.1. Rasio aspek video yang dihasilkan. Ini tetap pada standar.

SR integer

Nilai ini saat ini hanya dikembalikan oleh model 2.2. Tingkat resolusi video yang dihasilkan. Nilai enumerasi adalah 480, 720, dan 1080.

request_id string

ID permintaan unik. Anda dapat menggunakan ID ini untuk melacak dan memecahkan masalah.

SDK DashScope

Nama parameter dalam SDK sebagian besar konsisten dengan API HTTP. Struktur parameter dienkapsulasi berdasarkan fitur bahasa pemrograman tertentu.

Karena tugas image-to-video memakan waktu dan biasanya memerlukan 1 hingga 5 menit, SDK mengenkapsulasi proses panggilan asinkron HTTP dan mendukung panggilan sinkron maupun asinkron.

Waktu aktual yang dibutuhkan tergantung pada jumlah tugas dalam antrian dan status layanan. Harap bersabar saat menunggu hasil.

SDK Python

SDK Python mendukung dua metode input citra: URL publik atau jalur file lokal, yang bisa berupa jalur mutlak atau relatif. Anda dapat memilih salah satu metode ini. Untuk informasi lebih lanjut, lihat Citra input.

Catatan

Kami menyarankan Anda menginstal versi terbaru SDK Python DashScope untuk mencegah potensi kesalahan waktu proses. Untuk informasi lebih lanjut, lihat Instal atau upgrade SDK.

Panggilan sinkron

Contoh ini menunjukkan panggilan sinkron dan mencakup dua metode input citra: URL publik dan jalur file lokal.

Contoh permintaan
import os
from http import HTTPStatus
# sdk dashscope >= 1.23.4
from dashscope import VideoSynthesis
import dashscope

dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

# Dapatkan Kunci API DashScope (yang merupakan Kunci API Alibaba Cloud Model Studio) dari variabel lingkungan
api_key = os.getenv("DASHSCOPE_API_KEY")

# ========== Metode input citra (pilih salah satu) ==========
# [Metode 1] Gunakan URL citra publik
first_frame_url = "https://wanx.alicdn.com/material/20250318/first_frame.png"
last_frame_url = "https://wanx.alicdn.com/material/20250318/last_frame.png"

# [Metode 2] Gunakan jalur file lokal (file:// + jalur file)
# Gunakan jalur mutlak
# first_frame_url = "file://" + "/path/to/your/first_frame.png"  # Linux/macOS
# last_frame_url = "file://" + "C:/path/to/your/last_frame.png"  # Windows
# Atau gunakan jalur relatif
# first_frame_url = "file://" + "./first_frame.png"              # Gunakan jalur aktual Anda
# last_frame_url = "file://" + "./last_frame.png"                # Gunakan jalur aktual Anda

def sample_sync_call_kf2v():
    print('mohon tunggu...')
    rsp = VideoSynthesis.call(api_key=api_key,
                              model="wan2.2-kf2v-flash",
                              prompt="Realistic style, a small black cat looks up at the sky curiously, the camera gradually rises from eye level, and finally captures its curious gaze from a top-down view.",
                              first_frame_url=first_frame_url,
                              last_frame_url=last_frame_url,
                              resolution="720P",
                              prompt_extend=True)
    print(rsp)
    if rsp.status_code == HTTPStatus.OK:
        print(rsp.output.video_url)
    else:
        print('Gagal, status_code: %s, code: %s, message: %s' %
              (rsp.status_code, rsp.code, rsp.message))


if __name__ == '__main__':
    sample_sync_call_kf2v()
Contoh respons
`video_url` berlaku selama 24 jam. Unduh video segera.
{
    "status_code": 200,
    "request_id": "a37fafc3-907c-96f3-95a6-5b2a8268a3fd",
    "code": null,
    "message": "",
    "output": {
        "task_id": "4dba0092-da13-42b2-afb1-0f7b8a0f4643",
        "task_status": "SUCCEEDED",
        "video_url": "https://dashscope-result-wlcb-acdr-1.oss-cn-wulanchabu-acdr-1.aliyuncs.com/xxx.mp4?xxxxx",
        "submit_time": "2025-05-23 15:50:12.404",
        "scheduled_time": "2025-05-23 15:50:12.443",
        "end_time": "2025-05-23 15:54:56.502",
        "orig_prompt": "Realistic style, a small black cat looks up at the sky curiously, the camera gradually rises from eye level, and finally captures its curious gaze from a top-down view.",
        "actual_prompt": "Realistic style, a small black cat looks up at the sky curiously, the camera gradually rises from eye level, and finally captures its curious gaze from a top-down view. The cat's yellow eyes are bright and expressive, its ears are pricked up, and its whiskers are clearly visible. The background is a simple, light-colored wall, which highlights the cat's black fur and focused expression. A close-up shot emphasizes the change in the cat's gaze and posture."
    },
    "usage": {
        "video_count": 1,
        "video_duration": 5,
        "video_ratio": "standard"
    }
}

Panggilan asinkron

Contoh ini menunjukkan panggilan asinkron. Metode ini segera mengembalikan ID tugas. Anda kemudian harus melakukan polling untuk hasil atau menunggu tugas selesai.

Contoh permintaan
import os
from http import HTTPStatus
# sdk dashscope >= 1.23.4
from dashscope import VideoSynthesis
import dashscope

dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

# Dapatkan Kunci API DashScope (yang merupakan Kunci API Alibaba Cloud Model Studio) dari variabel lingkungan
api_key = os.getenv("DASHSCOPE_API_KEY")

# ========== Metode input citra (pilih salah satu) ==========
# [Metode 1] Gunakan URL citra publik
first_frame_url = "https://wanx.alicdn.com/material/20250318/first_frame.png"
last_frame_url = "https://wanx.alicdn.com/material/20250318/last_frame.png"

# [Metode 2] Gunakan jalur file lokal (file:// + jalur file)
# Gunakan jalur mutlak
# first_frame_url = "file://" + "/path/to/your/first_frame.png"  # Linux/macOS
# last_frame_url = "file://" + "C:/path/to/your/last_frame.png"  # Windows
# Atau gunakan jalur relatif
# first_frame_url = "file://" + "./first_frame.png"              # Gunakan jalur aktual Anda
# last_frame_url = "file://" + "./last_frame.png"                # Gunakan jalur aktual Anda

def sample_async_call_kf2v():
    print('mohon tunggu...')
    rsp = VideoSynthesis.async_call(api_key=api_key,
                                    model="wan2.2-kf2v-flash",
                                    prompt="Realistic style, a small black cat looks up at the sky curiously, the camera gradually rises from eye level, and finally captures its curious gaze from a top-down view.",
                                    first_frame_url=first_frame_url,
                                    last_frame_url=last_frame_url,
                                    resolution="720P",
                                    prompt_extend=True)
    print(rsp)
    if rsp.status_code == HTTPStatus.OK:
        print("task_id: %s" % rsp.output.task_id)
    else:
        print('Gagal, status_code: %s, code: %s, message: %s' %
              (rsp.status_code, rsp.code, rsp.message))

    # dapatkan informasi tugas termasuk status tugas.
    status = VideoSynthesis.fetch(task=rsp, api_key=api_key)
    if status.status_code == HTTPStatus.OK:
        print(status.output.task_status)  # periksa status tugas
    else:
        print('Gagal, status_code: %s, code: %s, message: %s' %
              (status.status_code, status.code, status.message))

    # tunggu hingga tugas selesai, akan memanggil fetch secara berkala, dan memeriksa apakah statusnya selesai.
    rsp = VideoSynthesis.wait(task=rsp, api_key=api_key)
    print(rsp)
    if rsp.status_code == HTTPStatus.OK:
        print(rsp.output.video_url)
    else:
        print('Gagal, status_code: %s, code: %s, message: %s' %
              (rsp.status_code, rsp.code, rsp.message))


if __name__ == '__main__':
    sample_async_call_kf2v()
Contoh respons

1. Contoh respons untuk membuat tugas

{
    "status_code": 200,
    "request_id": "c86ff7ba-8377-917a-90ed-xxxxxx",
    "code": "",
    "message": "",
    "output": {
        "task_id": "721164c6-8619-4a35-a6d9-xxxxxx",
        "task_status": "PENDING",
        "video_url": ""
    },
    "usage": null
}

2. Contoh respons untuk mengkueri hasil tugas

`video_url` berlaku selama 24 jam. Unduh video segera.
{
    "status_code": 200,
    "request_id": "efa545b3-f95c-9e3a-a3b6-xxxxxx",
    "code": null,
    "message": "",
    "output": {
        "task_id": "721164c6-8619-4a35-a6d9-xxxxxx",
        "task_status": "SUCCEEDED",
        "video_url": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.mp4?xxxxx",
        "submit_time": "2025-02-12 11:03:30.701",
        "scheduled_time": "2025-02-12 11:06:05.378",
        "end_time": "2025-02-12 11:12:18.853",
        "orig_prompt": "Realistic style, a small black cat looks up at the sky curiously, the camera gradually rises from eye level, and finally captures its curious gaze from a top-down view.",
        "actual_prompt": "Realistic style, a small black cat looks up at the sky curiously, the camera gradually rises from eye level, and finally captures its curious gaze from a top-down view. The cat's fur is jet black and shiny, its eyes are large and bright with golden pupils. It looks up with its ears pricked, appearing exceptionally focused. After the camera moves up, the cat turns to look directly at the camera, its eyes full of curiosity and alertness. The background is simple, highlighting the cat's detailed features. A close-up shot with soft, natural light."
    },
    "usage": {
        "video_count": 1,
        "video_duration": 5,
        "video_ratio": "standard"
    }
}

SDK Java

SDK Java mendukung dua metode input citra: URL publik atau jalur file lokal, yang harus berupa jalur mutlak. Anda dapat memilih salah satu metode ini. Untuk informasi lebih lanjut, lihat Citra input.

Catatan

Kami menyarankan Anda menginstal versi terbaru SDK Java DashScope untuk mencegah potensi kesalahan waktu proses. Untuk informasi lebih lanjut, lihat Instal atau upgrade SDK.

Panggilan sinkron

Contoh ini menunjukkan panggilan sinkron dan mencakup dua metode input citra: URL publik dan jalur file lokal.

Contoh permintaan
// Copyright (c) Alibaba, Inc. dan afiliasinya.

// sdk dashscope >= 2.20.1
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesis;
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesisParam;
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesisResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.Constants;
import com.alibaba.dashscope.utils.JsonUtils;

import java.util.HashMap;
import java.util.Map;


public class Kf2vSyncIntl {

    static {
        Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
    }

    // Dapatkan Kunci API DashScope (yang merupakan Kunci API Alibaba Cloud Model Studio) dari variabel lingkungan
    static String apiKey = System.getenv("DASHSCOPE_API_KEY");

    /**
     * Metode input citra (pilih salah satu):
     *
     * [Metode 1] URL Publik
     */
    static String firstFrameUrl = "https://wanx.alicdn.com/material/20250318/first_frame.png";
    static String lastFrameUrl = "https://wanx.alicdn.com/material/20250318/last_frame.png";

     /**
     * [Metode 2] Jalur file lokal (file:// + jalur mutlak atau file:/// + jalur mutlak)
     */
    // static String firstFrameUrl = "file://" + "/your/path/to/first_frame.png";  // Linux/macOS
    // static String lastFrameUrl = "file:///" + "C:/path/to/your/img.png";        // Windows

    public static void syncCall() {

        Map<String, Object> parameters = new HashMap<>();
        parameters.put("prompt_extend", true);
        parameters.put("resolution", "720P");

        VideoSynthesis videoSynthesis = new VideoSynthesis();
        VideoSynthesisParam param =
                VideoSynthesisParam.builder()
                        .apiKey(apiKey)
                        .model("wan2.2-kf2v-flash")
                        .prompt("Realistic style, a small black cat looks up at the sky curiously, the camera gradually rises from eye level, and finally captures its curious gaze from a top-down view.")
                        .firstFrameUrl(firstFrameUrl)
                        .lastFrameUrl(lastFrameUrl)
                        .parameters(parameters)
                        .build();
        VideoSynthesisResult result = null;
        try {
            System.out.println("---panggilan sinkron, mohon tunggu sebentar----");
            result = videoSynthesis.call(param);
        } catch (ApiException | NoApiKeyException e){
            throw new RuntimeException(e.getMessage());
        } catch (InputRequiredException e) {
            throw new RuntimeException(e);
        }
        System.out.println(JsonUtils.toJson(result));
    }

    public static void main(String[] args) {
        syncCall();
    }
}
Contoh respons
`video_url` berlaku selama 24 jam. Unduh video segera.
{
    "request_id": "e6bb4517-c073-9c10-b748-dedb8c11bb41",
    "output": {
        "task_id": "984784fe-83c1-4fc4-88c7-52c2c1fa92a2",
        "task_status": "SUCCEEDED",
        "video_url": "https://dashscope-result-wlcb-acdr-1.oss-cn-wulanchabu-acdr-1.aliyuncs.com/xxx.mp4?xxxxx"
    },
    "usage": {
        "video_count": 1,
        "video_duration": 5,
        "video_ratio": "standard"
    }
}

Panggilan asinkron

Contoh ini menunjukkan panggilan asinkron. Metode ini segera mengembalikan ID tugas. Anda kemudian harus melakukan polling untuk hasil atau menunggu tugas selesai.

Contoh permintaan
// Copyright (c) Alibaba, Inc. dan afiliasinya.

// sdk dashscope >= 2.20.1
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesis;
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesisParam;
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesisResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.Constants;
import com.alibaba.dashscope.utils.JsonUtils;
import java.util.HashMap;
import java.util.Map;

public class Kf2vAsync {

    static {
        Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
    }
    
    // Dapatkan Kunci API DashScope (yang merupakan Kunci API Alibaba Cloud Model Studio) dari variabel lingkungan
    static String apiKey = System.getenv("DASHSCOPE_API_KEY");

    /**
     * Metode input citra (pilih salah satu)
     *
     * [Metode 1] URL Publik
     */
    static String firstFrameUrl = "https://wanx.alicdn.com/material/20250318/first_frame.png";
    static String lastFrameUrl = "https://wanx.alicdn.com/material/20250318/last_frame.png";

    /**
     * [Metode 2] Jalur file lokal (file:// + jalur mutlak atau file:/// + jalur mutlak)
     */
    // static String firstFrameUrl = "file://" + "/your/path/to/first_frame.png";   // Linux/macOS
    // static String lastFrameUrl = "file:///" + "C:/path/to/your/img.png";        // Windows
    
    public static void asyncCall(){

        // Atur parameter
        Map<String, Object> parameters = new HashMap<>();
        parameters.put("prompt_extend", true);
        parameters.put("resolution", "720P");

        VideoSynthesis videoSynthesis = new VideoSynthesis();
        VideoSynthesisParam param =
                VideoSynthesisParam.builder()
                        .apiKey(apiKey)
                        .model("wan2.2-kf2v-flash")
                        .prompt("Realistic style, a small black cat looks up at the sky curiously, the camera gradually rises from eye level, and finally captures its curious gaze from a top-down view.")
                        .firstFrameUrl(firstFrameUrl)
                        .lastFrameUrl(lastFrameUrl)
                        .parameters(parameters)
                        .build();
        VideoSynthesisResult result = null;
        try {
            System.out.println("---panggilan asinkron, mohon tunggu sebentar----");
            result = videoSynthesis.asyncCall(param);
        } catch (ApiException | NoApiKeyException e){
            throw new RuntimeException(e.getMessage());
        } catch (InputRequiredException e) {
            throw new RuntimeException(e);
        }
        System.out.println(JsonUtils.toJson(result));

        String taskId = result.getOutput().getTaskId();

        System.out.println("taskId=" + taskId);

        try {
            result = videoSynthesis.wait(taskId, apiKey);
        } catch (ApiException | NoApiKeyException e){
            throw new RuntimeException(e.getMessage());
        }
        System.out.println(JsonUtils.toJson(result));
        System.out.println(JsonUtils.toJson(result.getOutput()));
    }

    public static void main(String[] args){
        asyncCall();
    }
}
Contoh respons

1. Respons contoh untuk membuat tugas

{
    "request_id": "5dbf9dc5-4f4c-9605-85ea-xxxxxxxx",
    "output": {
        "task_id": "7277e20e-aa01-4709-xxxxxxxx",
        "task_status": "PENDING"
    }
}

2. Contoh respons untuk kueri hasil tugas

video_url berlaku selama 24 jam. Kami menyarankan Anda segera mengunduh video tersebut.
{
    "request_id": "1625235c-c13e-93ec-aff7-xxxxxxxx",
    "output": {
        "task_id": "464a5e46-79a6-46fd-9823-xxxxxxxx",
        "task_status": "SUCCEEDED",
        "video_url": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.mp4?xxxxxx"
    },
    "usage": {
        "video_count": 1,
        "video_duration": 5,
        "video_ratio": "standard"
    }
}

Batasan

  • Retensi data: `task_id` dan URL video disimpan selama 24 jam. Setelah kedaluwarsa, tidak dapat dikueri atau diunduh.

  • Dukungan audio: Layanan ini hanya menghasilkan video tanpa suara. Output audio tidak didukung. Untuk menghasilkan audio, Anda dapat menggunakan layanan sintesis suara.

  • Moderasi konten: Moderasi Konten meninjau semua prompt input, citra, dan video output. Jika konten melanggar kebijakan kami, sistem mengembalikan kesalahan "IPInfringementSuspect" atau "DataInspectionFailed". Untuk informasi lebih lanjut, lihat Pesan kesalahan.

Deskripsi parameter utama

Citra input

Sediakan citra input untuk parameter first_frame_url dan last_frame_url dengan cara berikut:

Metode 1: URL publik

  • URL yang dapat diakses publik yang mendukung protokol HTTP atau HTTPS.

  • Contoh: https://example.com/images/cat.png.

Metode 2: Jalur file lokal (hanya SDK)

  • SDK Python: Mendukung jalur mutlak dan relatif. Aturan jalur file adalah sebagai berikut:

    Sistem

    Input file path

    Contoh (jalur mutlak)

    Contoh (jalur relatif)

    Linux atau macOS

    file://{jalur mutlak atau relatif file}

    file:///home/images/test.png

    file://./images/test.png

    Sistem operasi Windows

    file://D:/images/test.png

    file://./images/test.png

  • SDK Java: Hanya mendukung jalur mutlak. Aturan jalur file adalah sebagai berikut:

    Sistem

    Jalur file input

    Contoh (jalur mutlak)

    Linux atau macOS

    file://{jalur mutlak file}

    file:///home/images/test.png

    Sistem operasi Windows

    file:///{jalur mutlak file}

    file:///D:/images/test.png

Penagihan dan pembatasan laju

  • Untuk kuota gratis dan harga, lihat Daftar model dan harga.

  • Untuk batas laju, lihat Seri Wan.

  • Detail penagihan:

    • Penagihan didasarkan pada durasi dalam detik video yang berhasil dihasilkan. Biaya hanya dikenakan ketika API kueri mengembalikan task_status SUCCEEDED dan video berhasil dihasilkan.

    • Panggilan model yang gagal atau kesalahan pemrosesan tidak dikenai biaya atau mengonsumsi kuota gratis.

Kode kesalahan

Jika panggilan model gagal dan mengembalikan pesan kesalahan, lihat Pesan kesalahan untuk menyelesaikan masalah.

FAQ

FAQ Video: Untuk informasi lebih lanjut, lihat FAQ.

T: Bagaimana cara menghasilkan video dengan rasio aspek tertentu, seperti 3:4?

J: Rasio aspek video output ditentukan oleh citra input frame pertama (img_url), tetapi rasio eksak, seperti 3:4 yang ketat, tidak dapat dijamin.

Cara kerjanya: Model menggunakan rasio aspek citra input sebagai garis dasar dan kemudian menyesuaikannya ke resolusi yang didukung berdasarkan parameter resolusi, seperti 480P, 720P, atau 1080P. Karena resolusi output harus memenuhi persyaratan teknis di mana lebar dan tinggi harus habis dibagi 16, rasio aspek akhir mungkin memiliki sedikit penyimpangan, misalnya, penyesuaian dari 0,75 menjadi 0,739. Ini adalah perilaku normal.

  • Contoh: Citra input berukuran 750 × 1000 (rasio aspek 3:4 = 0,75), dan `resolution` diatur ke "720P" (total piksel target sekitar 920.000). Output aktual adalah 816 × 1104 (rasio aspek ≈ 0,739, total piksel sekitar 900.000).

  • Perhatikan bahwa parameter resolusi terutama mengontrol definisi video (jumlah total piksel). Rasio aspek video akhir masih didasarkan pada citra input, dengan hanya penyesuaian minor yang diperlukan.

Praktik terbaik: Untuk mencocokkan rasio aspek target secara ketat, gunakan citra input dengan rasio tersebut dan kemudian lakukan pasca-pemrosesan pada video output dengan memotong atau menambahkan padding. Misalnya, Anda dapat menggunakan tool pengeditan video untuk memotong video output ke rasio target, atau menambahkan bilah hitam atau latar belakang buram untuk padding.