Model image-to-video Wan menghasilkan video yang mulus dari gambar first-frame dan prompt teks.
Referensi: Panduan pengguna
Cakupan penggunaan
Untuk memastikan pemanggilan berhasil, pastikan model, URL titik akhir, dan kunci API berada di wilayah yang sama. Pemanggilan lintas wilayah akan gagal.
Pilih model: Konfirmasi wilayah tempat model berada.
Pilih URL: Gunakan URL titik akhir regional yang sesuai. Baik URL HTTP maupun URL SDK DashScope didukung.
Konfigurasikan kunci API Anda: Dapatkan kunci API untuk wilayah tersebut, lalu konfigurasikan sebagai variabel lingkungan (tidak digunakan lagi; sekarang digabung ke dalam konfigurasi kunci API).
Instal SDK: Jika Anda berencana memanggil API menggunakan SDK, instal SDK DashScope.
Kode contoh dalam topik ini berlaku untuk wilayah Singapura.
Pemanggilan HTTP
Tugas image-to-video memerlukan waktu untuk diselesaikan—biasanya 1 hingga 5 menit—sehingga API menggunakan pemanggilan asinkron. Proses lengkapnya terdiri dari dua langkah inti: Buat tugas → Polling hasil.
Langkah 1: Buat tugas dan dapatkan ID tugas
Singapura
POST https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis
Virginia
POST https://dashscope-us.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis
Beijing
POST https://dashscope.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis
Setelah tugas dibuat, gunakan
task_idyang dikembalikan untuk mengkueri hasilnya.task_idberlaku selama 24 jam. Jangan membuat tugas duplikat. Sebagai gantinya, gunakan polling untuk mengambil hasilnya.Untuk tutorial pemula, lihat Postman.
Parameter permintaan | Narasi multi-shotFitur ini hanya didukung oleh model wan2.6. Aktifkan dengan mengatur Dubbing otomatisFitur ini hanya didukung oleh model wan2.6 dan wan2.5. Jika Anda tidak menyediakan Sediakan file audioFitur ini hanya didukung oleh model wan2.6 dan wan2.5. Untuk menentukan musik latar atau sulih suara untuk video Anda, masukkan URL file audio kustom Anda di parameter Hasilkan video tanpa suaraHanya model-model berikut yang mendukung pembuatan video tanpa suara:
Gunakan negative promptGunakan parameter negative_prompt untuk mencegah “bunga” muncul dalam video yang dihasilkan. |
Headers | |
Content-Type Tipe konten dari permintaan. Harus berupa | |
Authorization Kredensial autentikasi menggunakan kunci API Model Studio. Contoh: | |
X-DashScope-Async Mengaktifkan pemrosesan asinkron. Harus diatur ke Penting Mengembalikan error "current user api does not support synchronous calls" jika tidak disertakan. | |
Body permintaan | |
model Nama model. Untuk informasi selengkapnya mengenai model dan harga, lihat Model pricing. Contoh: wan2.6-i2v-flash. | |
input Informasi input dasar, seperti prompt. | |
parameters Parameter pemrosesan video, seperti resolusi, durasi, penulisan ulang prompt, dan pemberian Watermark. |
Parameter respons | Respons berhasilSimpan Respons errorPembuatan task gagal. Lihat kode kesalahan untuk menyelesaikan masalah. |
output Informasi output task. | |
request_id Identifier unik untuk permintaan. Gunakan untuk pelacakan dan troubleshooting masalah. | |
code Kode kesalahan. Hanya dikembalikan ketika permintaan gagal. Lihat kode kesalahan untuk detailnya. | |
message Pesan kesalahan detail. Hanya dikembalikan ketika permintaan gagal. Lihat kode kesalahan untuk detailnya. |
Langkah 2: Kueri hasil berdasarkan ID task
Singapore
GET https://dashscope-intl.aliyuncs.com/api/v1/tasks/{task_id}
Virginia
GET https://dashscope-us.aliyuncs.com/api/v1/tasks/{task_id}
Beijing
GET https://dashscope.aliyuncs.com/api/v1/tasks/{task_id}
Saran polling: Generasi video dapat memakan waktu beberapa menit. Kami menyarankan Anda menggunakan mekanisme polling dengan interval kueri yang wajar, misalnya 15 detik, untuk mengambil hasilnya.
Transisi status task: PENDING → RUNNING → SUCCEEDED atau FAILED.
URL hasil: Setelah task berhasil, URL video akan dikembalikan. URL tersebut berlaku selama 24 jam. Setelah Anda mendapatkan URL tersebut, segera unduh dan simpan video ke layanan penyimpanan permanen, seperti Object Storage Service (OSS).
Masa berlaku task_id: 24 jam. Setelah periode ini, Anda tidak dapat lagi melakukan kueri terhadap hasil tersebut, dan API akan mengembalikan status task sebagai
UNKNOWN.
Parameter permintaan | Hasil Kueri TugasGanti |
Header | |
Authorization Kredensial otentikasi menggunakan kunci API Model Studio. Contoh: | |
Parameter path URL | |
task_id ID task yang akan dikueri. |
Parameter respons | Task berhasilURL video hanya disimpan selama 24 jam, lalu secara otomatis dipurge. Segera simpan video yang dihasilkan. Task gagalJika task gagal, Kueri task kedaluwarsa
|
output Informasi output task. | |
usage Statistik output. Hanya dihitung untuk hasil yang berhasil. | |
request_id Identifikasi unik untuk permintaan. Gunakan untuk pelacakan dan troubleshooting masalah. |
Pemanggilan SDK DashScope
Nama parameter SDK sebagian besar sesuai dengan API HTTP. Struktur parameter disesuaikan dengan konvensi spesifik bahasa.
Karena tugas image-to-video memerlukan waktu untuk diselesaikan—biasanya 1 hingga 5 menit—SDK membungkus alur pemanggilan asinkron HTTP dan mendukung metode pemanggilan sinkron maupun asinkron.
Waktu pemrosesan aktual tergantung pada panjang antrian dan eksekusi layanan. Tunggu hasilnya dengan sabar.
Pemanggilan SDK Python
Pastikan versi SDK Python DashScope Anda minimal 1.25.8 sebelum menjalankan kode di bawah ini.
Jika versinya terlalu lama, kesalahan seperti “url error, please check url!” dapat terjadi. Perbarui SDK seperti yang dijelaskan di Instal SDK.
Atur base_http_api_url berdasarkan wilayah model:
Singapura
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
Virginia
dashscope.base_http_api_url = 'https://dashscope-us.aliyuncs.com/api/v1'
Beijing
dashscope.base_http_api_url = 'https://dashscope.aliyuncs.com/api/v1'
Kode contoh
Pemanggilan sinkron
Pemanggilan sinkron memblokir hingga video dihasilkan dan hasil dikembalikan. Contoh ini menunjukkan tiga metode input gambar: URL publik, encoding Base64, dan jalur file lokal.
Contoh permintaan
import base64
import os
from http import HTTPStatus
from dashscope import VideoSynthesis
import mimetypes
import dashscope
# URL wilayah Singapura. Dapatkan URL: https://www.alibabacloud.com/help/en/model-studio/image-to-video-api-reference
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan kunci API Model Studio Anda: api_key="sk-xxx"
# Dapatkan kunci API Anda: https://www.alibabacloud.com/help/zh/model-studio/get-api-key
api_key = os.getenv("DASHSCOPE_API_KEY")
# --- Fungsi bantu: Untuk encoding Base64 ---
# Format: data:{MIME_type};base64,{base64_data}
def encode_file(file_path):
mime_type, _ = mimetypes.guess_type(file_path)
if not mime_type or not mime_type.startswith("image/"):
raise ValueError("Format gambar tidak didukung atau tidak dikenali")
with open(file_path, "rb") as image_file:
encoded_string = base64.b64encode(image_file.read()).decode('utf-8')
return f"data:{mime_type};base64,{encoded_string}"
"""
Metode input gambar:
Pilih salah satu dari tiga metode berikut,
1. Gunakan URL publik - Cocok untuk gambar yang dapat diakses publik
2. Gunakan file lokal - Cocok untuk pengembangan dan pengujian lokal
3. Gunakan encoding Base64 - Cocok untuk gambar pribadi atau skenario yang memerlukan transmisi terenkripsi
"""
# [Metode 1] Gunakan URL gambar yang dapat diakses publik
# Contoh: Gunakan URL gambar publik
img_url = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/wpimhv/rap.png"
# [Metode 2] Gunakan file lokal (mendukung jalur absolut dan relatif)
# Persyaratan format: file:// + jalur file
# Contoh (jalur absolut):
# img_url = "file://" + "/path/to/your/img.png" # Linux/macOS
# img_url = "file://" + "/C:/path/to/your/img.png" # Windows
# Contoh (jalur relatif):
# img_url = "file://" + "./img.png" # Relatif terhadap jalur file yang dapat dieksekusi saat ini
# [Metode 3] Gunakan gambar Base64-encoded
# img_url = encode_file("./img.png")
# Atur URL audio
audio_url = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/ozwpvi/rap.mp3"
def sample_call_i2v():
# Pemanggilan sinkron, mengembalikan hasil langsung
print('please wait...')
rsp = VideoSynthesis.call(api_key=api_key,
model='wan2.6-i2v-flash',
prompt='A scene of urban fantasy art. A dynamic graffiti art character. A boy made of spray paint comes to life from a concrete wall. He raps an English song at high speed while striking a classic, energetic rapper pose. The scene is set under an urban railway bridge at night. The lighting comes from a single street lamp, creating a cinematic atmosphere full of high energy and amazing detail. The audio of the video consists entirely of his rap, with no other dialogue or noise.',
img_url=img_url,
audio_url=audio_url,
resolution="720P",
duration=10,
prompt_extend=True,
watermark=False,
negative_prompt="",
seed=12345)
print(rsp)
if rsp.status_code == HTTPStatus.OK:
print("video_url:", rsp.output.video_url)
else:
print('Failed, status_code: %s, code: %s, message: %s' %
(rsp.status_code, rsp.code, rsp.message))
if __name__ == '__main__':
sample_call_i2v()Contoh respons
video_url berlaku selama 24 jam. Segera unduh video tersebut.
{
"status_code": 200,
"request_id": "2794c7a3-fe8c-4dd4-a1b7-xxxxxx",
"code": null,
"message": "",
"output": {
"task_id": "c15d5b14-07c4-4af5-b862-xxxxxx",
"task_status": "SUCCEEDED",
"video_url": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxx.mp4?Expires=xxx",
"submit_time": "2026-01-22 23:24:46.527",
"scheduled_time": "2026-01-22 23:24:46.565",
"end_time": "2026-01-22 23:25:59.978",
"orig_prompt": "A scene of urban fantasy art. A dynamic graffiti art character. A boy made of spray paint comes to life from a concrete wall. He raps an English song at high speed while striking a classic, energetic rapper pose. The scene is set under an urban railway bridge at night. The lighting comes from a single street lamp, creating a cinematic atmosphere full of high energy and amazing detail. The audio of the video consists entirely of his rap, with no other dialogue or noise."
},
"usage": {
"video_count": 1,
"video_duration": 0,
"video_ratio": "",
"duration": 10,
"input_video_duration": 0,
"output_video_duration": 10,
"audio": true,
"SR": 720
}
}Pemanggilan asinkron
Contoh ini menunjukkan pemanggilan asinkron. Mengembalikan task ID segera. Anda harus melakukan polling untuk hasil atau menunggu hingga selesai.
Contoh permintaan
import os
from http import HTTPStatus
from dashscope import VideoSynthesis
import dashscope
# URL wilayah Singapura. Dapatkan URL: https://www.alibabacloud.com/help/en/model-studio/image-to-video-api-reference
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan kunci API Model Studio Anda: api_key="sk-xxx"
# Dapatkan kunci API Anda: https://www.alibabacloud.com/help/zh/model-studio/get-api-key
api_key = os.getenv("DASHSCOPE_API_KEY")
# Gunakan URL gambar yang dapat diakses publik
img_url = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/wpimhv/rap.png"
# Atur URL audio
audio_url = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/ozwpvi/rap.mp3"
def sample_async_call_i2v():
# Pemanggilan asinkron, mengembalikan task_id
rsp = VideoSynthesis.async_call(api_key=api_key,
model='wan2.6-i2v-flash',
prompt='A scene of urban fantasy art. A dynamic graffiti art character. A boy made of spray paint comes to life from a concrete wall. He raps an English song at high speed while striking a classic, energetic rapper pose. The scene is set under an urban railway bridge at night. The lighting comes from a single street lamp, creating a cinematic atmosphere full of high energy and amazing detail. The audio of the video consists entirely of his rap, with no other dialogue or noise.',
img_url=img_url,
audio_url=audio_url,
resolution="720P",
duration=10,
prompt_extend=True,
watermark=False,
negative_prompt="",
seed=12345)
print(rsp)
if rsp.status_code == HTTPStatus.OK:
print("task_id: %s" % rsp.output.task_id)
else:
print('Failed, status_code: %s, code: %s, message: %s' %
(rsp.status_code, rsp.code, rsp.message))
# Dapatkan informasi tugas asinkron
status = VideoSynthesis.fetch(task=rsp, api_key=api_key)
if status.status_code == HTTPStatus.OK:
print(status.output.task_status)
else:
print('Failed, status_code: %s, code: %s, message: %s' %
(status.status_code, status.code, status.message))
# Tunggu hingga tugas asinkron 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('Failed, status_code: %s, code: %s, message: %s' %
(rsp.status_code, rsp.code, rsp.message))
if __name__ == '__main__':
sample_async_call_i2v()Contoh respons
1. Contoh respons untuk pembuatan tugas
{
"status_code": 200,
"request_id": "6dc3bf6c-be18-9268-9c27-xxxxxx",
"code": "",
"message": "",
"output": {
"task_id": "686391d9-7ecf-4290-a8e9-xxxxxx",
"task_status": "PENDING",
"video_url": ""
},
"usage": null
}2. Contoh respons untuk mengkueri hasil tugas
video_url berlaku selama 24 jam. Segera unduh video tersebut.
{
"status_code": 200,
"request_id": "2794c7a3-fe8c-4dd4-a1b7-xxxxxx",
"code": null,
"message": "",
"output": {
"task_id": "c15d5b14-07c4-4af5-b862-xxxxxx",
"task_status": "SUCCEEDED",
"video_url": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxx.mp4?Expires=xxx",
"submit_time": "2026-01-22 23:24:46.527",
"scheduled_time": "2026-01-22 23:24:46.565",
"end_time": "2026-01-22 23:25:59.978",
"orig_prompt": "A scene of urban fantasy art. A dynamic graffiti art character. A boy made of spray paint comes to life from a concrete wall. He raps an English song at high speed while striking a classic, energetic rapper pose. The scene is set under an urban railway bridge at night. The lighting comes from a single street lamp, creating a cinematic atmosphere full of high energy and amazing detail. The audio of the video consists entirely of his rap, with no other dialogue or noise."
},
"usage": {
"video_count": 1,
"video_duration": 0,
"video_ratio": "",
"duration": 10,
"input_video_duration": 0,
"output_video_duration": 10,
"audio": true,
"SR": 720
}
}Pemanggilan SDK Java
Pastikan versi SDK Java DashScope Anda minimal 2.22.6 sebelum menjalankan kode di bawah ini.
Jika versinya terlalu lama, kesalahan seperti “url error, please check url!” dapat terjadi. Perbarui SDK seperti yang dijelaskan di Instal SDK.
Atur baseHttpApiUrl berdasarkan wilayah model:
Singapura
Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
Virginia
Constants.baseHttpApiUrl = "https://dashscope-us.aliyuncs.com/api/v1";
Beijing
Constants.baseHttpApiUrl = "https://dashscope.aliyuncs.com/api/v1";
Kode contoh
Pemanggilan sinkron
Pemanggilan sinkron memblokir hingga video dihasilkan dan hasil dikembalikan. Contoh ini menunjukkan tiga metode input gambar: URL publik, encoding Base64, dan jalur file lokal.
Contoh permintaan
// Copyright (c) Alibaba, Inc. and its affiliates.
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.JsonUtils;
import com.alibaba.dashscope.utils.Constants;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Base64;
import java.util.HashMap;
import java.util.Map;
public class Image2Video {
static {
// URL wilayah Singapura. Dapatkan URL: https://www.alibabacloud.com/help/en/model-studio/image-to-video-api-reference
Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
}
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan kunci API Model Studio Anda: apiKey="sk-xxx"
// Dapatkan kunci API Anda: https://www.alibabacloud.com/help/zh/model-studio/get-api-key
static String apiKey = System.getenv("DASHSCOPE_API_KEY");
/**
* Metode input gambar: Pilih salah satu dari tiga berikut
*
* 1. Gunakan URL publik - Cocok untuk gambar yang dapat diakses publik
* 2. Gunakan file lokal - Cocok untuk pengembangan dan pengujian lokal
* 3. Gunakan encoding Base64 - Cocok untuk gambar pribadi atau skenario yang memerlukan transmisi terenkripsi
*/
// [Metode 1] URL publik
static String imgUrl = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/wpimhv/rap.png";
// [Metode 2] Jalur file lokal (file://+jalur absolut)
// static String imgUrl = "file://" + "/your/path/to/img.png"; // Linux/macOS
// static String imgUrl = "file://" + "/C:/your/path/to/img.png"; // Windows
// [Metode 3] Encoding Base64
// static String imgUrl = Image2Video.encodeFile("/your/path/to/img.png");
// Atur URL audio
static String audioUrl = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/ozwpvi/rap.mp3";
public static void image2video() throws ApiException, NoApiKeyException, InputRequiredException {
// Atur parameter
Map<String, Object> parameters = new HashMap<>();
parameters.put("prompt_extend", true);
parameters.put("watermark", false);
parameters.put("seed", 12345);
VideoSynthesis vs = new VideoSynthesis();
VideoSynthesisParam param =
VideoSynthesisParam.builder()
.apiKey(apiKey)
.model("wan2.6-i2v-flash")
.prompt("A scene of urban fantasy art. A dynamic graffiti art character. A boy made of spray paint comes to life from a concrete wall. He raps an English song at high speed while striking a classic, energetic rapper pose. The scene is set under an urban railway bridge at night. The lighting comes from a single street lamp, creating a cinematic atmosphere full of high energy and amazing detail. The audio of the video consists entirely of his rap, with no other dialogue or noise.")
.imgUrl(imgUrl)
.audioUrl(audioUrl)
.duration(10)
.parameters(parameters)
.resolution("720P")
.negativePrompt("")
.build();
System.out.println("please wait...");
VideoSynthesisResult result = vs.call(param);
System.out.println(JsonUtils.toJson(result));
}
/**
* Encode file menjadi string Base64
* @param filePath Jalur file
* @return String Base64 dalam format: data:{MIME_type};base64,{base64_data}
*/
public static String encodeFile(String filePath) {
Path path = Paths.get(filePath);
if (!Files.exists(path)) {
throw new IllegalArgumentException("File tidak ada: " + filePath);
}
// Deteksi tipe MIME
String mimeType = null;
try {
mimeType = Files.probeContentType(path);
} catch (IOException e) {
throw new IllegalArgumentException("Tidak dapat mendeteksi tipe file: " + filePath);
}
if (mimeType == null || !mimeType.startsWith("image/")) {
throw new IllegalArgumentException("Format gambar tidak didukung atau tidak dikenali");
}
// Baca konten file dan encode
byte[] fileBytes = null;
try{
fileBytes = Files.readAllBytes(path);
} catch (IOException e) {
throw new IllegalArgumentException("Tidak dapat membaca konten file: " + filePath);
}
String encodedString = Base64.getEncoder().encodeToString(fileBytes);
return "data:" + mimeType + ";base64," + encodedString;
}
public static void main(String[] args) {
try {
image2video();
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}Contoh respons
video_url berlaku selama 24 jam. Segera unduh video tersebut.
{
"request_id": "87c091bb-7a3c-4904-8501-xxxxxx",
"output": {
"task_id": "413ed6e4-5f3a-4f57-8d58-xxxxxx",
"task_status": "SUCCEEDED",
"video_url": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxx.mp4?Expires=xxx",
"orig_prompt": "A scene of urban fantasy art. A dynamic graffiti art character. A boy made of spray paint comes to life from a concrete wall. He raps an English song at high speed while striking a classic, energetic rapper pose. The scene is set under an urban railway bridge at night. The lighting comes from a single street lamp, creating a cinematic atmosphere full of high energy and amazing detail. The audio of the video consists entirely of his rap, with no other dialogue or noise.",
"submit_time": "2026-01-22 23:25:45.729",
"scheduled_time": "2026-01-22 23:25:45.771",
"end_time": "2026-01-22 23:26:44.942"
},
"usage": {
"video_count": 1,
"duration": 10.0,
"input_video_duration": 0.0,
"output_video_duration": 10.0,
"SR": "720"
},
"status_code": 200,
"code": "",
"message": ""
}Pemanggilan asinkron
Contoh ini menunjukkan pemanggilan asinkron. Mengembalikan task ID segera. Anda harus melakukan polling untuk hasil atau menunggu hingga selesai.
Contoh permintaan
// Copyright (c) Alibaba, Inc. and its affiliates.
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesis;
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesisListResult;
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.task.AsyncTaskListParam;
import com.alibaba.dashscope.utils.JsonUtils;
import com.alibaba.dashscope.utils.Constants;
import java.util.HashMap;
import java.util.Map;
public class Image2Video {
static {
// URL wilayah Singapura. Dapatkan URL: https://www.alibabacloud.com/help/en/model-studio/image-to-video-api-reference
Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
}
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan kunci API Model Studio Anda: api_key="sk-xxx"
// Dapatkan kunci API Anda: https://www.alibabacloud.com/help/zh/model-studio/get-api-key
static String apiKey = System.getenv("DASHSCOPE_API_KEY");
// Atur URL gambar input
static String imgUrl = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/wpimhv/rap.png";
// Atur URL audio
static String audioUrl = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/ozwpvi/rap.mp3";
public static void image2video() throws ApiException, NoApiKeyException, InputRequiredException {
// Atur parameter
Map<String, Object> parameters = new HashMap<>();
parameters.put("prompt_extend", true);
parameters.put("watermark", false);
parameters.put("seed", 12345);
VideoSynthesis vs = new VideoSynthesis();
VideoSynthesisParam param =
VideoSynthesisParam.builder()
.apiKey(apiKey)
.model("wan2.6-i2v-flash")
.prompt("A scene of urban fantasy art. A dynamic graffiti art character. A boy made of spray paint comes to life from a concrete wall. He raps an English song at high speed while striking a classic, energetic rapper pose. The scene is set under an urban railway bridge at night. The lighting comes from a single street lamp, creating a cinematic atmosphere full of high energy and amazing detail. The audio of the video consists entirely of his rap, with no other dialogue or noise.")
.imgUrl(imgUrl)
.audioUrl(audioUrl)
.duration(10)
.parameters(parameters)
.resolution("720P")
.negativePrompt("")
.build();
// Pemanggilan asinkron
VideoSynthesisResult task = vs.asyncCall(param);
System.out.println(JsonUtils.toJson(task));
System.out.println("please wait...");
// Dapatkan hasil
VideoSynthesisResult result = vs.wait(task, apiKey);
System.out.println(JsonUtils.toJson(result));
}
// Dapatkan daftar tugas
public static void listTask() throws ApiException, NoApiKeyException {
VideoSynthesis is = new VideoSynthesis();
AsyncTaskListParam param = AsyncTaskListParam.builder().build();
param.setApiKey(apiKey);
VideoSynthesisListResult result = is.list(param);
System.out.println(result);
}
// Dapatkan hasil tugas tunggal
public static void fetchTask(String taskId) throws ApiException, NoApiKeyException {
VideoSynthesis is = new VideoSynthesis();
// Jika DASHSCOPE_API_KEY diatur sebagai variabel lingkungan, apiKey bisa null
VideoSynthesisResult result = is.fetch(taskId, apiKey);
System.out.println(result.getOutput());
System.out.println(result.getUsage());
}
public static void main(String[] args) {
try {
image2video();
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}Contoh respons
1. Contoh respons untuk pembuatan tugas
{
"request_id": "5dbf9dc5-4f4c-9605-85ea-xxxxxxxx",
"output": {
"task_id": "7277e20e-aa01-4709-xxxxxxxx",
"task_status": "PENDING"
}
}2. Contoh respons untuk mengkueri hasil tugas
video_url berlaku selama 24 jam. Segera unduh video tersebut.
{
"request_id": "87c091bb-7a3c-4904-8501-xxxxxx",
"output": {
"task_id": "413ed6e4-5f3a-4f57-8d58-xxxxxx",
"task_status": "SUCCEEDED",
"video_url": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxx.mp4?Expires=xxx",
"orig_prompt": "A scene of urban fantasy art. A dynamic graffiti art character. A boy made of spray paint comes to life from a concrete wall. He raps an English song at high speed while striking a classic, energetic rapper pose. The scene is set under an urban railway bridge at night. The lighting comes from a single street lamp, creating a cinematic atmosphere full of high energy and amazing detail. The audio of the video consists entirely of his rap, with no other dialogue or noise.",
"submit_time": "2026-01-22 23:25:45.729",
"scheduled_time": "2026-01-22 23:25:45.771",
"end_time": "2026-01-22 23:26:44.942"
},
"usage": {
"video_count": 1,
"duration": 10.0,
"input_video_duration": 0.0,
"output_video_duration": 10.0,
"SR": "720"
},
"status_code": 200,
"code": "",
"message": ""
}Batasan
Validitas data: Baik task_id maupun URL video hanya disimpan selama 24 jam. Setelah kedaluwarsa, tidak dapat dikueri atau diunduh.
Moderasi konten: Konten input (misalnya, prompt, gambar) dan video output menjalani pemeriksaan keamanan konten. Pelanggaran mengembalikan kesalahan seperti “IPInfringementSuspect” atau “DataInspectionFailed”. Lihat Pesan kesalahan.
Konfigurasi akses jaringan: Tautan video disimpan di OSS Alibaba Cloud. Jika sistem bisnis Anda tidak dapat mengakses tautan OSS eksternal karena kebijakan keamanan, tambahkan domain OSS berikut ke daftar putih akses jaringan Anda.
# Daftar domain OSS dashscope-result-bj.oss-cn-beijing.aliyuncs.com dashscope-result-hz.oss-cn-hangzhou.aliyuncs.com dashscope-result-sh.oss-cn-shanghai.aliyuncs.com dashscope-result-wlcb.oss-cn-wulanchabu.aliyuncs.com dashscope-result-zjk.oss-cn-zhangjiakou.aliyuncs.com dashscope-result-sz.oss-cn-shenzhen.aliyuncs.com dashscope-result-hy.oss-cn-heyuan.aliyuncs.com dashscope-result-cd.oss-cn-chengdu.aliyuncs.com dashscope-result-gz.oss-cn-guangzhou.aliyuncs.com dashscope-result-wlcb-acdr-1.oss-cn-wulanchabu-acdr-1.aliyuncs.com
Kode kesalahan
Jika pemanggilan model gagal dan mengembalikan kesalahan, lihat Pesan kesalahan untuk troubleshooting.
FAQ
T: Bagaimana cara menghasilkan video dengan rasio aspek tertentu (misalnya, 3:4)?
J: Rasio aspek video output ditentukan oleh gambar first-frame input (img_url). Namun, rasio eksak (misalnya, tepat 3:4) tidak dijamin—penyimpangan kecil dapat terjadi.
Mengapa terjadi penyimpangan: Model menggunakan rasio gambar input Anda sebagai garis dasar dan menghitung resolusi valid terdekat berdasarkan total piksel target (ditentukan oleh resolusi). Karena lebar dan tinggi harus kelipatan 16, dilakukan penyesuaian kecil. Jadi meskipun rasio output tidak tepat 3:4, akan sangat mendekati.
Contoh: Gambar input 750×1000 (rasio aspek 3:4 = 0,75), dengan resolusi = "720P" (target ~920.000 piksel) menghasilkan output 816×1104 (rasio aspek ≈ 0,739, ~900.000 piksel).
Praktik terbaik:
Kontrol input: Gunakan gambar dengan rasio aspek target sebagai first frame.
Pasca-pemrosesan: Jika rasio ketat diperlukan, potong atau tambahkan padding pada video yang dihasilkan menggunakan alat editing.