Model image-to-video Wan menghasilkan video yang mulus dari gambar frame pertama dan prompt teks.
Dokumen terkait: Panduan pengguna
Wan 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.
Kode contoh dalam topik ini ditujukan untuk wilayah Singapura.
Domain lama https://dashscope-intl.aliyuncs.com untuk wilayah Singapura akan segera ditinggalkan. Harap segera migrasi ke domain baru https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com.
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
Ganti WorkspaceId dengan Workspace ID aktual Anda.
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
Frankfurt
POST https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis
Ganti WorkspaceId dengan workspace ID Anda.
-
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 Postman.
Parameter permintaan |
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 memberikan
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:
Negative promptGunakan parameter negative_prompt untuk mencegah munculnya "flowers" dalam video yang dihasilkan.
|
Header |
|
|
Content-Type Tipe konten permintaan. Harus |
|
|
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 Penting
Jika header permintaan ini tidak ada, kesalahan "current user api does not support synchronous calls" akan dikembalikan. |
|
Body permintaan |
|
|
model Nama model. Model yang tersedia dan harga: harga model. Contoh: wan2.6-i2v-flash. |
|
|
input Bidang input termasuk prompt. |
|
|
parameters Kontrol untuk resolusi, durasi, penulisan ulang prompt cerdas, dan watermark. |
Parameter respons |
Respons berhasilSimpan
Respons kesalahanPembuatan tugas gagal. Lihat Kode kesalahan.
|
|
output Informasi tentang output tugas. |
|
|
request_id Identifier 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. |
Langkah 2: Tanyakan hasil tugas
Singapura
GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id}
Ganti WorkspaceId dengan Workspace ID aktual Anda.
Virginia
GET https://dashscope-us.aliyuncs.com/api/v1/tasks/{task_id}
China (Beijing)
GET https://dashscope.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 Workspace ID Anda.
-
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, kueri akan mengembalikan status tugas sebagaiUNKNOWN.
Parameter permintaan |
Hasil tugas kueriGanti |
Header |
|
|
Authorization Mengotentikasi permintaan dengan Kunci API Model Studio. Contoh: Bearer sk-xxxx. |
|
Parameter path |
|
|
task_id ID tugas. |
Parameter respons |
Tugas berhasilURL video hanya berlaku selama 24 jam, lalu secara otomatis dihapus. Segera simpan video yang dihasilkan. Tugas gagalSaat tugas gagal,
Kueri tugas kedaluwarsa
|
|
output Detail output tugas. |
|
|
usage Statistik penggunaan tugas, yang hanya dihitung untuk tugas yang berhasil. |
|
|
request_id Identifier permintaan unik untuk pelacakan dan troubleshooting. |
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 tergantung pada antrian tugas dan status layanan.
SDK Python
Pastikan versi SDK Python DashScope Anda minimal 1.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'
Ganti WorkspaceId dengan Workspace ID aktual Anda.
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'
Frankfurt
dashscope.base_http_api_url = 'https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1'
Saat melakukan pemanggilan, ganti WorkspaceId dengan Workspace ID aktual Anda.
Kode contoh
Pemanggilan sinkron
Pemanggilan sinkron memblokir hingga pembuatan video selesai. 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 berikut untuk wilayah Singapura. Ganti WorkspaceId dengan workspace ID 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 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:
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. Encoding Base64: Terbaik untuk gambar pribadi 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 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 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 untuk wilayah Singapura. Ganti WorkspaceId dengan workspace ID 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
1. 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
}
2. Respons kueri 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
Pastikan versi SDK Java DashScope Anda minimal 2.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";
Ganti WorkspaceId dengan Workspace ID aktual Anda.
Virginia
Constants.baseHttpApiUrl = "https://dashscope-us.aliyuncs.com/api/v1";
Beijing
Constants.baseHttpApiUrl = "https://dashscope.aliyuncs.com/api/v1";
Frankfurt
Constants.baseHttpApiUrl = "https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/api/v1";
Saat melakukan pemanggilan, ganti WorkspaceId dengan Workspace ID aktual Anda.
Kode contoh
Pemanggilan sinkron
Pemanggilan sinkron memblokir hingga pembuatan video selesai. 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 {
// 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 input 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. Encoding Base64: Terbaik untuk gambar pribadi 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] 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));
}
/**
* Meng-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 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 encode
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 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 satu tugas
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. Respons pembuatan tugas
{
"request_id": "5dbf9dc5-4f4c-9605-85ea-xxxxxxxx",
"output": {
"task_id": "7277e20e-aa01-4709-xxxxxxxx",
"task_status": "PENDING"
}
}
2. Respons kueri 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 input (prompt, gambar) dan video output tunduk pada moderasi konten. Pelanggaran menghasilkan kesalahan
IPInfringementSuspectatauDataInspectionFailed. Kode kesalahan.
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 input (img_url) menentukan rasio aspek video output. Namun, rasio tepat seperti 3:4 tidak dijamin, karena kemungkinan terjadi penyimpangan kecil.
-
Mengapa terjadi penyimpangan?
Model menggunakan rasio aspek gambar input sebagai garis dasar dan menggabungkannya dengan jumlah piksel total 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. Akibatnya, rasio aspek output tidak dijamin tepat 3:4, tetapi akan sangat dekat.-
Misalnya, gambar input 750×1000 (rasio aspek 3:4 = 0,75) dengan
resolutiondiatur ke "720P" (target sekitar 920.000 piksel total) menghasilkan output 816×1104 (rasio aspek ≈ 0,739, sekitar 900.000 piksel total).
-
-
Rekomendasi:
-
Kontrol input: 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 generasi.
-
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 putih 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 usang. Jika Anda memiliki persyaratan kontrol keamanan, hubungi manajer akun Anda untuk mendapatkan daftar nama domain OSS terbaru.