Model image-to-video Wan menghasilkan video yang mulus dari gambar frame pertama dan prompt teks .
Dokumen terkait: Panduan pengguna
CatatanWan 2.7 - image-to-video mendukung first-frame-to-video, first-and-last-frame-to-video, dan kelanjutan video. Kami merekomendasikan versi ini.
Fitur image-to-video (berbasis frame pertama) untuk model Wan 2.6 dan sebelumnya hanya mendukung first-frame-to-video.
Ketersediaan
Model, URL endpoint, dan Kunci API Anda harus berada di wilayah yang sama. Pemanggilan lintas wilayah akan gagal.
- Pilih model: Konfirmasi wilayah tempat model tersedia.
- Pilih URL: Pilih URL endpoint untuk wilayah yang sesuai. URL HTTP dan SDK DashScope didukung.
- Konfigurasikan Kunci API: Dapatkan Kunci API untuk wilayah tersebut, lalu konfigurasikan Kunci API dalam variabel lingkungan Anda.
- Instal SDK: Untuk melakukan pemanggilan dengan SDK, instal SDK DashScope.
CatatanKode contoh dalam topik ini ditujukan untuk wilayah Singapura.
PentingAlibaba Cloud Model Studio telah merilis domain khusus ruang kerja untuk wilayah China (Beijing) dan Singapura. Domain khusus baru ini memberikan performa lebih unggul dan stabilitas lebih tinggi untuk permintaan inferensi. Kami merekomendasikan migrasi ke domain baru:
- China (Beijing): dari
https://dashscope.aliyuncs.comkehttps://{WorkspaceId}.cn-beijing.maas.aliyuncs.com - Singapura: dari
https://dashscope-intl.aliyuncs.comkehttps://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com
{WorkspaceId} adalah ID ruang kerja Anda, yang dapat ditemukan pada halaman Detail Ruang Kerja di Konsol Alibaba Cloud Model Studio. Domain lama tetap berfungsi penuh.
Pemanggilan HTTP
Tugas image-to-video menggunakan pemanggilan asinkron (biasanya 1–5 menit): buat tugas → polling hasil.
Langkah 1: Buat tugas
Singapura
POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis
Virginia
POST https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis
Beijing
POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis
Frankfurt
POST https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis
Ganti {WorkspaceId} dengan ID ruang kerja aktual Anda.
Catatan
- Setelah tugas dibuat, gunakan
task_idyang dikembalikan untuk menanyakan hasilnya.task_idberlaku selama 24 jam. Jangan membuat tugas duplikat. Sebagai gantinya, gunakan polling untuk mengambil hasilnya. - Untuk panduan pemula, lihat Panggil API dengan Postman atau cURL.
Parameter permintaanHeaderContent-Type Tipe konten permintaan. Harus berupa Authorization Mengotentikasi permintaan dengan Kunci API Model Studio. Contoh: Bearer sk-xxxx. X-DashScope-Async Mengaktifkan pemrosesan asinkron. Permintaan HTTP hanya mendukung pemanggilan asinkron. Harus diatur ke PentingJika header permintaan ini tidak ada, kesalahan "current user api does not support synchronous calls" akan dikembalikan. Isi permintaanmodel Nama model. Model yang tersedia dan harga: harga model. Contoh: wan2.6-i2v-flash. input Bidang masukan termasuk prompt. parameters Kontrol untuk resolusi, durasi, penulisan ulang prompt cerdas, dan watermark. | Narasi multi-shotFitur ini hanya didukung oleh model seri Wan2.6. Anda dapat mengaktifkannya dengan mengatur Dubbing otomatisFitur ini hanya didukung oleh model seri Wan2.6 dan Wan2.5. Jika Anda tidak menyediakan Audio kustomFitur ini hanya didukung oleh model seri Wan2.6 dan Wan2.5. Untuk menentukan musik latar atau narasi suara untuk video, masukkan URL file audio kustom Anda dalam parameter Video tanpa suaraHanya model-model berikut yang mendukung pembuatan video tanpa suara:
Prompt negatifGunakan parameter negative_prompt untuk mencegah kemunculan "flowers" dalam video yang dihasilkan. |
Parameter responsoutput Informasi tentang keluaran tugas. request_id Pengidentifikasi permintaan unik untuk pelacakan dan troubleshooting. code Kode kesalahan. Hanya dikembalikan untuk permintaan yang gagal. Lihat Kode kesalahan. message Pesan kesalahan detail. Hanya dikembalikan untuk permintaan yang gagal. Lihat Kode kesalahan. | Respons berhasilSimpan Respons kesalahanPembuatan tugas gagal. Lihat Kode kesalahan. |
Langkah 2: Tanyakan hasil tugas
Singapura
GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id}
Virginia
GET https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/api/v1/tasks/{task_id}
China (Beijing)
GET https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/tasks/{task_id}
Frankfurt
GET https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1/tasks/{task_id}
Ganti {WorkspaceId} dengan ID ruang kerja aktual Anda.
Catatan
- Rekomendasi polling: Pembuatan video memerlukan beberapa menit. Gunakan mekanisme polling dengan interval yang wajar, misalnya 15 detik.
- Transisi status tugas: PENDING → RUNNING → SUCCEEDED atau FAILED.
- Tautan hasil: Setelah tugas berhasil, URL video yang berlaku selama 24 jam dikembalikan. Unduh dan simpan video ke penyimpanan permanen, seperti OSS.
task_idmasa berlaku: 24 jam. Setelah periode ini, penanyakan akan mengembalikan status tugas sebagaiUNKNOWN.
Parameter permintaanHeaderAuthorization Mengotentikasi permintaan dengan Kunci API Model Studio. Contoh: Bearer sk-xxxx. Parameter jalurtask_id ID tugas. | Tanyakan hasil tugasGanti |
Parameter responsoutput Detail keluaran tugas. usage Statistik penggunaan tugas, yang hanya dihitung untuk tugas yang berhasil. request_id Pengidentifikasi permintaan unik untuk pelacakan dan troubleshooting. | Tugas berhasilURL video hanya berlaku selama 24 jam lalu secara otomatis dihapus. Segera simpan video yang dihasilkan. Tugas gagalSaat tugas gagal, Penanyakan tugas kedaluwarsa
|
Pemanggilan SDK DashScope
Nama parameter SDK sebagian besar konsisten dengan API HTTP, mengikuti konvensi masing-masing bahasa.
Tugas image-to-video biasanya memerlukan waktu 1–5 menit. SDK membungkus proses pemanggilan HTTP asinkron dan mendukung pemanggilan sinkron maupun asinkron.
Waktu pemrosesan bergantung pada antrian tugas dan status layanan.
SDK Python
PentingPastikan versi SDK Python DashScope Anda minimal1.25.8 sebelum menjalankan kode berikut.
Versi lama mungkin memicu kesalahan seperti "url error, please check url!". Untuk memperbarui, lihat Instal SDK.
Atur base_http_api_url sesuai wilayah model:
Singapura
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
Virginia
dashscope.base_http_api_url = 'https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/api/v1'
Beijing
dashscope.base_http_api_url = 'https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1'
Frankfurt
dashscope.base_http_api_url = 'https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1'
Ganti {WorkspaceId} dengan ID ruang kerja aktual Anda.
Kode contoh
Pemanggilan sinkron
Pemanggilan sinkron memblokir hingga pembuatan video selesai. Contoh ini menunjukkan tiga metode masukan gambar: URL publik, enkode Base64, dan jalur file lokal.
Contoh permintaan
import base64
import os
from http import HTTPStatus
from dashscope import VideoSynthesis
import mimetypes
import dashscope
# URL berikut ditujukan untuk wilayah Singapura. Ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL berbeda-beda berdasarkan wilayah.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
# Jika variabel lingkungan tidak diatur, ganti baris berikut dengan Kunci API Anda dari Model Studio: api_key="sk-xxx"
# Dapatkan Kunci API Anda: https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key = os.getenv("DASHSCOPE_API_KEY")
# --- Fungsi bantu untuk enkode 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("Unsupported or unrecognized image format")
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 masukan gambar:
Berikut adalah tiga cara untuk menyediakan gambar. Pilih salah satu.
1. URL publik: Ideal untuk gambar yang sudah dapat diakses publik.
2. File lokal: Cocok untuk pengembangan dan pengujian lokal.
3. Enkode Base64: Terbaik untuk gambar privat atau saat data harus ditransmisikan secara aman.
"""
# [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)
# 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 direktori skrip saat ini
# [Metode 3] Gunakan gambar terenkripsi Base64
# 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 secara 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. Unduh video sebelum kedaluwarsa.
{
"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
Pemanggilan asinkron segera mengembalikan ID tugas. Anda kemudian melakukan polling untuk hasil atau menunggu hingga selesai.
Contoh permintaan
import os
from http import HTTPStatus
from dashscope import VideoSynthesis
import dashscope
# URL berikut ditujukan untuk wilayah Singapura. Ganti {WorkspaceId} dengan ID ruang kerja aktual Anda. URL berbeda-beda berdasarkan wilayah.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
# Jika variabel lingkungan tidak diatur, ganti baris berikut dengan Kunci API Anda dari Model Studio: api_key="sk-xxx"
# Dapatkan Kunci API Anda: https://www.alibabacloud.com/help/en/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 ID tugas
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 status 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
- Respons 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
}
- Respons penanyakan tugas
video_url berlaku selama 24 jam. Unduh video sebelum kedaluwarsa.
{
"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
}
}
SDK Java
PentingPastikan versi SDK Java DashScope Anda minimal2.22.6 sebelum menjalankan kode berikut.
Versi lama mungkin memicu kesalahan seperti "url error, please check url!". Untuk memperbarui, lihat Instal SDK.
Atur baseHttpApiUrl sesuai wilayah model:
Singapura
Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
Virginia
Constants.baseHttpApiUrl = "https://{WorkspaceId}.us-east-1.maas.aliyuncs.com/api/v1";
Beijing
Constants.baseHttpApiUrl = "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1";
Frankfurt
Constants.baseHttpApiUrl = "https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1";
Ganti {WorkspaceId} dengan ID ruang kerja aktual Anda.
Kode contoh
Pemanggilan sinkron
Pemanggilan sinkron memblokir hingga pembuatan video selesai. Contoh ini menunjukkan tiga metode masukan gambar: URL publik, enkode 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 {
// Atur endpoint. Contoh ini menggunakan wilayah Singapura. Untuk wilayah lain, lihat: https://www.alibabacloud.com/help/en/model-studio/image-to-video-api-reference
Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
}
// Jika variabel lingkungan tidak diatur, ganti baris berikut dengan Kunci API Anda dari Model Studio: apiKey="sk-xxx"
// Dapatkan Kunci API Anda: https://www.alibabacloud.com/help/en/model-studio/get-api-key
static String apiKey = System.getenv("DASHSCOPE_API_KEY");
/**
* Metode masukan gambar: Pilih salah satu dari tiga berikut.
*
* 1. URL publik: Ideal untuk gambar yang sudah dapat diakses publik.
* 2. File lokal: Cocok untuk pengembangan dan pengujian lokal.
* 3. Enkode Base64: Terbaik untuk gambar privat atau saat data harus ditransmisikan secara aman.
*/
// [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] Enkode 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));
}
/**
* Mengenkod 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 does not exist: " + filePath);
}
// Deteksi tipe MIME
String mimeType = null;
try {
mimeType = Files.probeContentType(path);
} catch (IOException e) {
throw new IllegalArgumentException("Cannot detect file type: " + filePath);
}
if (mimeType == null || !mimeType.startsWith("image/")) {
throw new IllegalArgumentException("Unsupported or unrecognized image format");
}
// Baca konten file dan enkode
byte[] fileBytes = null;
try{
fileBytes = Files.readAllBytes(path);
} catch (IOException e) {
throw new IllegalArgumentException("Cannot read file content: " + 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. Unduh video sebelum kedaluwarsa.
{
"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
Pemanggilan asinkron segera mengembalikan ID tugas. Anda kemudian 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 {
// Atur endpoint. Contoh ini menggunakan wilayah Singapura. Untuk wilayah lain, lihat: https://www.alibabacloud.com/help/en/model-studio/image-to-video-api-reference
Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
}
// Jika variabel lingkungan tidak diatur, ganti baris berikut dengan Kunci API Anda dari Model Studio: apiKey="sk-xxx"
// Dapatkan Kunci API Anda: https://www.alibabacloud.com/help/en/model-studio/get-api-key
static String apiKey = System.getenv("DASHSCOPE_API_KEY");
// Atur URL gambar masukan
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 satu tugas
public static void fetchTask(String taskId) throws ApiException, NoApiKeyException {
VideoSynthesis is = new VideoSynthesis();
// Jika DASHSCOPE_API_KEY diatur sebagai variabel lingkungan, apiKey dapat bernilai 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
- Respons pembuatan tugas
{
"request_id": "5dbf9dc5-4f4c-9605-85ea-xxxxxxxx",
"output": {
"task_id": "7277e20e-aa01-4709-xxxxxxxx",
"task_status": "PENDING"
}
}
- Respons penanyakan tugas
video_url berlaku selama 24 jam. Unduh video sebelum kedaluwarsa.
{
"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
- Retensi data:
task_iddan URL video disimpan selama 24 jam. Setelah periode ini, Anda tidak dapat menanyakan atau mengunduhnya. - Moderasi konten: Semua masukan (prompt, gambar) dan video keluaran dikenai moderasi konten. Pelanggaran menghasilkan kesalahan
IPInfringementSuspectatauDataInspectionFailed. Kode kesalahan.
Batasan yang diketahui
Saat wan2.6-i2v-flash menghasilkan rotasi berkelanjutan objek melingkar (seperti cincin, roda gigi, atau jarum jam), video mungkin berhenti sekitar 1 detik pada sekitar tanda 3 detik. Untuk menghindari masalah ini, gunakan model Wan 2.7 - image-to-video sebagai gantinya.
Kode kesalahan
Jika pemanggilan model mengembalikan pesan kesalahan, lihat Kode kesalahan.
FAQ
T: Bagaimana cara menghasilkan video dengan rasio aspek tertentu?
J: Gambar frame pertama masukan (img_url) menentukan rasio aspek video keluaran. Namun, rasio tepat seperti 3:4 tidak dijamin, karena kemungkinan terjadi penyimpangan kecil.
-
Mengapa terjadi penyimpangan?
Model menggunakan rasio aspek gambar masukan sebagai garis dasar dan menggabungkannya dengan jumlah total piksel dari tingkat resolusi yang dipilih (
resolution) untuk menghitung resolusi valid terdekat. Karena lebar dan tinggi video harus merupakan kelipatan 16, model menyesuaikan resolusi akhir sesuai kebutuhan. Akibatnya, rasio aspek keluaran tidak dijamin tepat 3:4, tetapi akan sangat mendekati.- Sebagai contoh, gambar masukan berukuran 750×1000 (rasio aspek 3:4 = 0,75) dengan
resolutiondiatur ke "720P" (target sekitar 920.000 piksel total) menghasilkan keluaran 816×1104 (rasio aspek ≈ 0,739, sekitar 900.000 piksel total).
- Sebagai contoh, gambar masukan berukuran 750×1000 (rasio aspek 3:4 = 0,75) dengan
-
Rekomendasi:
- Kontrol masukan: Untuk hasil terbaik, gunakan gambar frame pertama yang sudah memiliki rasio aspek target Anda.
- Pasca-pemrosesan: Jika Anda memerlukan rasio aspek ketat, potong video atau tambahkan bilah hitam menggunakan alat pengeditan setelah pembuatan.
T: Bagaimana cara mendapatkan daftar izin domain penyimpanan video?
J: Video yang dihasilkan model disimpan di OSS. API mengembalikan URL publik sementara. Untuk mengonfigurasi daftar izin firewall untuk URL unduhan ini, perhatikan hal berikut: Penyimpanan dasar dapat berubah secara dinamis. Topik ini tidak menyediakan daftar nama domain OSS tetap untuk mencegah masalah akses akibat informasi yang kedaluwarsa. Jika Anda memiliki persyaratan kontrol keamanan, hubungi manajer akun Anda untuk mendapatkan daftar nama domain OSS terbaru.