Model image-to-video Wan 2.7 menggunakan multimodal input (teks, gambar, audio, dan video) untuk menjalankan tiga tugas utama: generasi video dari frame pertama, generasi video dari frame pertama dan terakhir, serta kelanjutan video (melanjutkan dari segmen video awal, dengan atau tanpa frame akhir).
-
Pengaturan dasar: Mendukung durasi video 2 hingga 15 detik, resolusi video yang dapat dikonfigurasi (720p atau 1080p), penulisan ulang prompt cerdas, dan watermarking.
-
Kemampuan audio: Mendukung dubbing otomatis atau unggah audio kustom, memastikan sinkronisasi audio-video.
-
Narasi multi-shot: Memungkinkan Anda menghasilkan video dengan beberapa shot sambil menjaga konsistensi subjek antar shot.
Tautan cepat: coba online (Singapura | Virginia | Tiongkok (Beijing)) | Referensi API
Mulai cepat
|
Input prompt |
Segmen video awal input (2 dtk) |
Masukkan gambar frame terakhir |
Video output (12 dtk, kelanjutan 10 dtk) |
|
Seorang pria menunduk ke sebuah kotak kayu di tanah. Ia membungkuk dan membuka tutupnya dengan hati-hati. Ia menatap isi kotak tersebut, bibirnya gemetar dan sedikit terbuka. Alisnya berkerut dan matanya melebar dengan ekspresi ngeri. |
|
Sebelum melakukan panggilan, dapatkan Kunci API dan konfigurasikan sebagai Variabel lingkungan. Untuk menggunakan SDK, instal SDK DashScope.
Python SDK
Pastikan SDK Python DashScope Anda versi 1.25.16 atau lebih baru sebelum menjalankan kode berikut.
Jika Anda menggunakan versi yang lebih lama, mungkin muncul error seperti "url error, please check url!". Lihat Instal SDK untuk memperbarui versi Anda.
# -*- coding: utf-8 -*-
from http import HTTPStatus
from dashscope import VideoSynthesis
import dashscope
import os
# URL ini untuk wilayah Singapura. URL bervariasi berdasarkan wilayah. Untuk informasi selengkapnya, lihat https://www.alibabacloud.com/help/en/model-studio/image-to-video-general-api-reference
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx"
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key = os.getenv("DASHSCOPE_API_KEY")
media = [
{
"type": "first_clip",
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20260414/cqcbkw/wan2.7-i2v-video-continuation.mp4"
},
{
"type": "last_frame",
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20260414/mrwahg/wan2.7-i2v-video-continuation.webp"
}
]
def sample_sync_call():
print('----sync call, please wait a moment----')
rsp = VideoSynthesis.call(
api_key=api_key,
model="wan2.7-i2v-2026-04-25",
media=media,
resolution="720P",
duration=12,
watermark=True,
prompt="Seorang pria menunduk ke sebuah kotak kayu di tanah. Ia membungkuk dan membuka tutupnya dengan hati-hati. Ia menatap isi kotak tersebut, bibirnya gemetar dan sedikit terbuka. Alisnya berkerut dan matanya melebar dengan ekspresi ngeri.",
)
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_sync_call()
Java SDK
Pastikan SDK Java DashScope Anda versi 2.22.14 atau lebih baru sebelum menjalankan kode berikut.
Jika Anda menggunakan versi yang lebih lama, mungkin muncul error seperti "url error, please check url!". Lihat Instal SDK untuk memperbarui versi Anda.
// 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.Constants;
import com.alibaba.dashscope.utils.JsonUtils;
import java.util.ArrayList;
import java.util.List;
public class Image2Video {
static {
// URL wilayah Singapura. Ganti WorkspaceId dengan ID ruang kerja aktual Anda. URL bervariasi berdasarkan wilayah.
Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
}
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: apiKey="sk-xxx"
// Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key
static String apiKey = System.getenv("DASHSCOPE_API_KEY");
public static void syncCall() {
VideoSynthesis videoSynthesis = new VideoSynthesis();
final String prompt = "Seorang pria menunduk ke sebuah kotak kayu di tanah. Ia membungkuk dan membuka tutupnya dengan hati-hati. Ia menatap isi kotak tersebut, bibirnya gemetar dan sedikit terbuka. Alisnya berkerut dan matanya melebar dengan ekspresi ngeri.";
List<VideoSynthesisParam.Media> media = new ArrayList<VideoSynthesisParam.Media>(){{
add(VideoSynthesisParam.Media.builder()
.url("https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20260414/cqcbkw/wan2.7-i2v-video-continuation.mp4")
.type("first_clip")
.build());
add(VideoSynthesisParam.Media.builder()
.url("https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20260414/mrwahg/wan2.7-i2v-video-continuation.webp")
.type("last_frame")
.build());
}};
VideoSynthesisParam param =
VideoSynthesisParam.builder()
.apiKey(apiKey)
.model("wan2.7-i2v-2026-04-25")
.prompt(prompt)
.media(media)
.watermark(true)
.duration(12)
.resolution("720P")
.build();
VideoSynthesisResult result = null;
try {
System.out.println("---sync call, please wait a moment----");
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();
}
}
Curl
Langkah 1: Buat tugas dan dapatkan ID tugas
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
-H 'X-DashScope-Async: enable' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "wan2.7-i2v-2026-04-25",
"input": {
"prompt": "Seorang pria menunduk ke sebuah kotak kayu di tanah. Ia membungkuk dan membuka tutupnya dengan hati-hati. Ia menatap isi kotak tersebut, bibirnya gemetar dan sedikit terbuka. Alisnya berkerut dan matanya melebar dengan ekspresi ngeri.",
"media": [
{
"type": "first_clip",
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20260414/cqcbkw/wan2.7-i2v-video-continuation.mp4"
},
{
"type": "last_frame",
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20260414/mrwahg/wan2.7-i2v-video-continuation.webp"
}
]
},
"parameters": {
"resolution": "720P",
"duration": 12,
"prompt_extend": true,
"watermark": true
}
}'
Langkah 2: Ambil hasil menggunakan ID tugas
Ganti {task_id} dengan nilai task_id yang dikembalikan oleh panggilan API sebelumnya. task_id berlaku untuk kueri selama 24 jam.
curl -X GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id} \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"Contoh output
video_url berlaku selama 24 jam. Unduh video tersebut segera.{
"request_id": "c1209113-8437-424f-a386-xxxxxx",
"output": {
"task_id": "966cebcd-dedc-4962-af88-xxxxxx",
"task_status": "SUCCEEDED",
"video_url": "https://dashscope-result-sh.oss-accelerate.aliyuncs.com/xxx.mp4?Expires=xxx",
...
},
...
}
Catatan penggunaan
-
Model yang didukung bervariasi berdasarkan wilayah. Sumber daya terisolasi antar wilayah. Untuk model yang didukung di setiap wilayah, lihat Konsol Model Studio.
-
Saat melakukan panggilan, pastikan model, URL titik akhir, dan Kunci API Anda semuanya berasal dari wilayah yang sama. Panggilan lintas wilayah akan gagal.
Kode contoh dalam topik ini ditujukan untuk wilayah Singapura.
Kemampuan inti
Generasi video dari frame pertama
Model yang didukung: model seri wan2.7.
Pengaturan parameter: Bidang type dalam array media mendukung dua kombinasi berikut. Lihat Aset media input untuk detail kombinasi aset media.
-
Frame pertama: Atur
typekefirst_frame. Model secara otomatis menambahkan audio ke video. -
Frame pertama + audio: Atur
typekefirst_framedandriving_audio. Model menggunakan audio tersebut untuk menggerakkan generasi video guna fitur seperti sinkronisasi bibir dan waktu aksi.
|
Prompt |
Gambar frame pertama |
Video output |
|
Sebuah adegan seni fantasi urban. Karakter seni grafiti dinamis. Seorang anak laki-laki yang terbuat dari cat semprot hidup dari dinding beton. Ia menyanyikan lagu rap berbahasa Inggris dengan kecepatan tinggi sambil mengambil pose rapper klasik yang energetik. Adegan ini berlatar malam hari di bawah jembatan rel kereta perkotaan. Cahaya berasal dari satu lampu jalan, menciptakan suasana sinematik penuh energi tinggi dan detail luar biasa. Audio video hanya terdiri dari rap tersebut, tanpa dialog atau kebisingan lainnya. |
Audio input: |
Python SDK
Pastikan versi SDK Python DashScope Anda adalah 1.25.16 atau lebih baru. Untuk memperbarui, lihat Instal SDK.# -*- coding: utf-8 -*-
from http import HTTPStatus
from dashscope import VideoSynthesis
import dashscope
import os
# Ini adalah URL untuk wilayah Singapura. URL bervariasi berdasarkan wilayah. Untuk daftar URL, lihat https://www.alibabacloud.com/help/en/model-studio/image-to-video-general-api-reference.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx"
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key.
api_key = os.getenv("DASHSCOPE_API_KEY")
media = [
{
"type": "first_frame",
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/wpimhv/rap.png"
},
{
"type": "driving_audio",
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/ozwpvi/rap.mp3"
}
]
def sample_sync_call():
print('----sync call, please wait a moment----')
rsp = VideoSynthesis.call(
api_key=api_key,
model="wan2.7-i2v-2026-04-25",
media=media,
resolution="720P",
duration=10,
watermark=True,
prompt="Sebuah adegan seni fantasi urban. Karakter seni grafiti dinamis. Seorang anak laki-laki yang terbuat dari cat semprot hidup dari dinding beton. Ia menyanyikan lagu rap berbahasa Inggris dengan kecepatan tinggi sambil mengambil pose rapper klasik yang energetik. Adegan ini berlatar malam hari di bawah jembatan rel kereta perkotaan. Cahaya berasal dari satu lampu jalan, menciptakan suasana sinematik penuh energi tinggi dan detail luar biasa. Audio video hanya terdiri dari rap tersebut, tanpa dialog atau kebisingan lainnya.",
)
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_sync_call()
Java SDK
Pastikan versi SDK Java DashScope Anda adalah 2.22.14 atau lebih baru. Untuk memperbarui, lihat Instal SDK.// 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.Constants;
import com.alibaba.dashscope.utils.JsonUtils;
import java.util.ArrayList;
import java.util.List;
public class Image2Video {
static {
// Ini adalah titik akhir untuk wilayah Singapura. Untuk wilayah China (Beijing), gunakan https://dashscope.aliyuncs.com/api/v1
Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
}
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: apiKey="sk-xxx"
// Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key.
static String apiKey = System.getenv("DASHSCOPE_API_KEY");
public static void syncCall() {
VideoSynthesis videoSynthesis = new VideoSynthesis();
final String prompt = "Sebuah adegan seni fantasi urban. Karakter seni grafiti dinamis. Seorang anak laki-laki yang terbuat dari cat semprot hidup dari dinding beton. Ia menyanyikan lagu rap berbahasa Inggris dengan kecepatan tinggi sambil mengambil pose rapper klasik yang energetik. Adegan ini berlatar malam hari di bawah jembatan rel kereta perkotaan. Cahaya berasal dari satu lampu jalan, menciptakan suasana sinematik penuh energi tinggi dan detail luar biasa. Audio video hanya terdiri dari rap tersebut, tanpa dialog atau kebisingan lainnya.";
List<VideoSynthesisParam.Media> media = new ArrayList<VideoSynthesisParam.Media>(){{
add(VideoSynthesisParam.Media.builder()
.url("https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/wpimhv/rap.png")
.type("first_frame")
.build());
add(VideoSynthesisParam.Media.builder()
.url("https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/ozwpvi/rap.mp3")
.type("driving_audio")
.build());
}};
VideoSynthesisParam param =
VideoSynthesisParam.builder()
.apiKey(apiKey)
.model("wan2.7-i2v-2026-04-25")
.prompt(prompt)
.media(media)
.watermark(true)
.duration(10)
.resolution("720P")
.build();
VideoSynthesisResult result = null;
try {
System.out.println("---sync call, please wait a moment----");
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();
}
}
Curl
Langkah 1: Buat tugas dan dapatkan ID tugas
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
-H 'X-DashScope-Async: enable' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "wan2.7-i2v-2026-04-25",
"input": {
"prompt": "Sebuah adegan seni fantasi urban. Karakter seni grafiti dinamis. Seorang anak laki-laki yang terbuat dari cat semprot hidup dari dinding beton. Ia menyanyikan lagu rap berbahasa Inggris dengan kecepatan tinggi sambil mengambil pose rapper klasik yang energetik. Adegan ini berlatar malam hari di bawah jembatan rel kereta perkotaan. Cahaya berasal dari satu lampu jalan, menciptakan suasana sinematik penuh energi tinggi dan detail luar biasa. Audio video hanya terdiri dari rap tersebut, tanpa dialog atau kebisingan lainnya.",
"media": [
{
"type": "first_frame",
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/wpimhv/rap.png"
},
{
"type": "driving_audio",
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/ozwpvi/rap.mp3"
}
]
},
"parameters": {
"resolution": "720P",
"duration": 10,
"prompt_extend": true,
"watermark": true
}
}'
Langkah 2: Ambil hasil menggunakan ID tugas
Ganti {task_id} dengan nilai task_id yang dikembalikan oleh panggilan API sebelumnya. task_id berlaku untuk kueri selama 24 jam.
curl -X GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id} \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"Contoh output
video_url berlaku selama 24 jam. Unduh video tersebut segera.{
"request_id": "c1209113-8437-424f-a386-xxxxxx",
"output": {
"task_id": "966cebcd-dedc-4962-af88-xxxxxx",
"task_status": "SUCCEEDED",
"video_url": "https://dashscope-result-sh.oss-accelerate.aliyuncs.com/xxx.mp4?Expires=xxx",
...
},
...
}
Generasi video dari frame pertama dan terakhir
Model yang didukung: model seri wan2.7.
Pengaturan parameter: Bidang type dalam array media mendukung dua kombinasi berikut. Lihat Aset media input untuk detail kombinasi aset media.
-
Frame pertama + frame terakhir: Atur
typekefirst_framedanlast_frame. Model secara otomatis menambahkan audio ke video. -
Frame pertama + frame terakhir + audio: Atur
typekefirst_frame,last_frame, dandriving_audio. Model menggunakan audio tersebut untuk menggerakkan generasi video.
|
Prompt |
Gambar frame pertama |
Gambar frame terakhir |
Video keluaran |
|
Di pagi buta saat matahari terbit, sebuah labu kecil berembun duduk di kebun labu. Tiba-tiba, labu tersebut retak terbuka dengan suara "KRAS". Cahaya keemasan memancar dari celah saat labu terbelah, melepaskan hembusan kabut putih. Seekor kelinci kecil muncul di tengah labu yang terbuka. |
|
|
Python SDK
Pastikan versi SDK Python DashScope Anda adalah 1.25.16 atau lebih baru. Untuk memperbarui, lihat Instal SDK.# -*- coding: utf-8 -*-
from http import HTTPStatus
from dashscope import VideoSynthesis
import dashscope
import os
# Ini adalah URL untuk wilayah Singapura. URL bervariasi berdasarkan wilayah. Untuk daftar URL, lihat https://www.alibabacloud.com/help/en/model-studio/image-to-video-general-api-reference.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx"
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key.
api_key = os.getenv("DASHSCOPE_API_KEY")
media = [
{
"type": "first_frame",
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20260414/welyei/wan2.7-i2v-first-frame.webp"
},
{
"type": "last_frame",
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20260414/zongha/wan2.7-i2v-last-frame.webp"
}
]
def sample_sync_call():
print('----sync call, please wait a moment----')
rsp = VideoSynthesis.call(
api_key=api_key,
model="wan2.7-i2v-2026-04-25",
media=media,
resolution="720P",
duration=15,
watermark=True,
prompt="Di pagi buta saat matahari terbit, sebuah labu kecil berembun duduk di kebun labu. Tiba-tiba, labu tersebut retak terbuka dengan suara \"KRAS\". Cahaya keemasan memancar dari celah saat labu terbelah, melepaskan hembusan kabut putih. Seekor kelinci kecil muncul di tengah labu yang terbuka.",
)
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_sync_call()
Java SDK
Pastikan versi SDK Java DashScope Anda adalah 2.22.14 atau lebih baru. Untuk memperbarui, lihat Instal SDK.// 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.Constants;
import com.alibaba.dashscope.utils.JsonUtils;
import java.util.ArrayList;
import java.util.List;
public class Image2Video {
static {
// Ini adalah titik akhir untuk wilayah Singapura. Untuk wilayah China (Beijing), gunakan https://dashscope.aliyuncs.com/api/v1
Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
}
// Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: apiKey="sk-xxx"
// Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key.
static String apiKey = System.getenv("DASHSCOPE_API_KEY");
public static void syncCall() {
VideoSynthesis videoSynthesis = new VideoSynthesis();
final String prompt = "Di pagi buta saat matahari terbit, sebuah labu kecil berembun duduk di kebun labu. Tiba-tiba, labu tersebut retak terbuka dengan suara \"KRAS\". Cahaya keemasan memancar dari celah saat labu terbelah, melepaskan hembusan kabut putih. Seekor kelinci kecil muncul di tengah labu yang terbuka.";
List<VideoSynthesisParam.Media> media = new ArrayList<VideoSynthesisParam.Media>(){{
add(VideoSynthesisParam.Media.builder()
.url("https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20260414/welyei/wan2.7-i2v-first-frame.webp")
.type("first_frame")
.build());
add(VideoSynthesisParam.Media.builder()
.url("https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20260414/zongha/wan2.7-i2v-last-frame.webp")
.type("last_frame")
.build());
}};
VideoSynthesisParam param =
VideoSynthesisParam.builder()
.apiKey(apiKey)
.model("wan2.7-i2v-2026-04-25")
.prompt(prompt)
.media(media)
.watermark(true)
.duration(15)
.resolution("720P")
.build();
VideoSynthesisResult result = null;
try {
System.out.println("---sync call, please wait a moment----");
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();
}
}
Curl
Langkah 1: Buat tugas dan dapatkan ID tugas
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
-H 'X-DashScope-Async: enable' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "wan2.7-i2v-2026-04-25",
"input": {
"prompt": "Di pagi buta saat matahari terbit, sebuah labu kecil berembun duduk di kebun labu. Tiba-tiba, labu tersebut retak terbuka dengan suara \"KRAS\". Cahaya keemasan memancar dari celah saat labu terbelah, melepaskan hembusan kabut putih. Seekor kelinci kecil muncul di tengah labu yang terbuka.",
"media": [
{
"type": "first_frame",
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20260414/welyei/wan2.7-i2v-first-frame.webp"
},
{
"type": "last_frame",
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20260414/zongha/wan2.7-i2v-last-frame.webp"
}
]
},
"parameters": {
"resolution": "720P",
"duration": 15,
"prompt_extend": false,
"watermark": true
}
}'
Langkah 2: Ambil hasil menggunakan ID tugas
Ganti {task_id} dengan nilai task_id yang dikembalikan oleh panggilan API sebelumnya. task_id berlaku untuk kueri selama 24 jam.
curl -X GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id} \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"Kelanjutan video
Model yang didukung: model seri wan2.7.
Fitur ini melanjutkan konten dari segmen video input. Output mencakup klip asli, dan durasinya dihitung dalam total waktu generasi. Misalnya, jika Anda menginput video 2 detik dan mengatur durasi output total menjadi 12 detik, video akhir akan berdurasi 12 detik (klip asli 2 detik ditambah kelanjutan 10 detik).
Pengaturan parameter: Bidang type dalam array media mendukung dua kombinasi berikut. Lihat Aset media input untuk detail kombinasi aset media.
-
Klip video pertama: Atur
typekefirst_clipuntuk melanjutkan video. -
Klip video pertama + kelanjutan frame terakhir: Atur
typekefirst_clipdanlast_frame. Ini melanjutkan klip video pertama dan memastikan frame akhirnya sesuai dengan frame terakhir yang diberikan.
Kelanjutan klip pertama
|
Prompt |
Klip video pertama |
Video output |
|
Tukang roti membawa roti berlapis glasur, meletakkan kuasnya, dan kamera mengikutinya ke oven di belakang untuk memanggangnya. Tukang roti menutup pintu oven, berdiri di sampingnya sambil mengawasi roti, mencium aromanya, dan berkata, "enak sekali". |
Klip pertama dan frame terakhir
|
Prompt |
Klip video pertama |
Gambar frame terakhir |
Video output |
|
Pria tersebut menunduk ke kotak kayu di tanah. Ia membungkuk, membuka tutupnya dengan hati-hati, dan menatap isinya. Bibirnya gemetar dan sedikit terbuka, alisnya berkerut, dan matanya melebar dengan ekspresi ngeri. |
|
Python SDK
Pastikan versi SDK Python DashScope Anda adalah 1.25.16 atau lebih baru. Untuk memperbarui, lihat Instal SDK.# -*- coding: utf-8 -*-
from http import HTTPStatus
from dashscope import VideoSynthesis
import dashscope
import os
# Ini adalah URL untuk wilayah Singapura. URL bervariasi berdasarkan wilayah. Untuk daftar URL, lihat https://www.alibabacloud.com/help/en/model-studio/image-to-video-general-api-reference.
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan Kunci API Model Studio Anda: api_key="sk-xxx"
# Kunci API bervariasi berdasarkan wilayah. Untuk mendapatkan Kunci API, lihat https://www.alibabacloud.com/help/en/model-studio/get-api-key.
api_key = os.getenv("DASHSCOPE_API_KEY")
media = [
{
"type": "first_clip",
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20260414/rptnhd/wan2.7-i2v-video-continuation-2.mp4"
}
]
def sample_sync_call():
print('----sync call, please wait a moment----')
rsp = VideoSynthesis.call(
api_key=api_key,
model="wan2.7-i2v-2026-04-25",
media=media,
resolution="720P",
duration=12,
watermark=True,
prompt="Tukang roti membawa roti berlapis glasur, meletakkan kuasnya, dan kamera mengikutinya ke oven di belakang untuk memanggangnya. Tukang roti menutup pintu oven, berdiri di sampingnya sambil mengawasi roti, mencium aromanya, dan berkata, \"enak sekali\".",
)
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_sync_call()
Java SDK
Pastikan versi SDK Java DashScope Anda adalah 2.22.14 atau lebih baru. Untuk memperbarui, lihat Instal SDK.// 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.Constants;
import com.alibaba.dashscope.utils.JsonUtils;
import java.util.ArrayList;
import java.util.List;
public class Image2Video {
static {
Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
}
static String apiKey = System.getenv("DASHSCOPE_API_KEY");
public static void syncCall() {
VideoSynthesis videoSynthesis = new VideoSynthesis();
final String prompt = "Tukang roti membawa roti berlapis glasur, meletakkan kuasnya, dan kamera mengikutinya ke oven di belakang untuk memanggangnya. Tukang roti menutup pintu oven, berdiri di sampingnya sambil mengawasi roti, mencium aromanya, dan berkata, \"enak sekali\".";
List<VideoSynthesisParam.Media> media = new ArrayList<VideoSynthesisParam.Media>(){{
add(VideoSynthesisParam.Media.builder()
.url("https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20260414/rptnhd/wan2.7-i2v-video-continuation-2.mp4")
.type("first_clip")
.build());
}};
VideoSynthesisParam param =
VideoSynthesisParam.builder()
.apiKey(apiKey)
.model("wan2.7-i2v-2026-04-25")
.prompt(prompt)
.media(media)
.watermark(true)
.duration(12)
.resolution("720P")
.build();
VideoSynthesisResult result = null;
try {
System.out.println("---sync call, please wait a moment----");
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();
}
}
Curl
Langkah 1: Buat tugas dan dapatkan ID tugas
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
-H 'X-DashScope-Async: enable' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "wan2.7-i2v-2026-04-25",
"input": {
"prompt": "Tukang roti membawa roti berlapis glasur, meletakkan kuasnya, dan kamera mengikutinya ke oven di belakang untuk memanggangnya. Tukang roti menutup pintu oven, berdiri di sampingnya sambil mengawasi roti, mencium aromanya, dan berkata, \"enak sekali\".",
"media": [
{
"type": "first_clip",
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20260414/rptnhd/wan2.7-i2v-video-continuation-2.mp4"
}
]
},
"parameters": {
"resolution": "720P",
"duration": 12,
"prompt_extend": false,
"watermark": true
}
}'
Langkah 2: Ambil hasil menggunakan ID tugas
Ganti {task_id} dengan nilai task_id yang dikembalikan oleh panggilan API sebelumnya. task_id berlaku untuk kueri selama 24 jam.
curl -X GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id} \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"Media masukan
Kirimkan aset media dalam array media, di mana setiap elemen harus menentukan type dan url, dan setiap type hanya boleh muncul paling banyak satu kali dalam array media.
Hanya kombinasi media spesifik yang tercantum di bawah ini yang didukung. Kombinasi lain akan mengembalikan error.
Frame pertama
// Kombinasi 1: Frame pertama, dengan dubbing otomatis
{
"media": [
{ "type": "first_frame", "url": "https://example.com/image.jpg" }
]
}
// Kombinasi 2: Frame pertama + audio penggerak, dengan audio kustom
{
"media": [
{ "type": "first_frame", "url": "https://example.com/image.jpg" },
{ "type": "driving_audio", "url": "https://example.com/audio.mp3" }
]
}
Frame pertama dan terakhir
// Kombinasi 1: Frame pertama + frame terakhir, dengan dubbing otomatis
{
"media": [
{ "type": "first_frame", "url": "https://example.com/image1.jpg" },
{ "type": "last_frame", "url": "https://example.com/image2.jpg" }
]
}
// Kombinasi 2: Frame pertama + frame terakhir + audio penggerak, dengan audio kustom
{
"media": [
{ "type": "first_frame", "url": "https://example.com/image1.jpg" },
{ "type": "last_frame", "url": "https://example.com/image2.jpg" },
{ "type": "driving_audio", "url": "https://example.com/audio.mp3" }
]
}
Kelanjutan video
// Kombinasi 1: Klip video pertama
{
"media": [
{ "type": "first_clip", "url": "https://example.com/video.mp4" }
]
}
// Kombinasi 2: Klip video pertama + frame terakhir
{
"media": [
{ "type": "first_clip", "url": "https://example.com/video.mp4" },
{ "type": "last_frame", "url": "https://example.com/last_image.jpg" }
]
}
Gambar input
-
Jumlah gambar: Anda dapat mengirimkan maksimal satu gambar untuk frame pertama (
type=first_frame) dan satu gambar untuk frame terakhir (type=last_frame). -
Metode input:
-
URL publik: Mendukung protokol HTTP dan HTTPS. Contoh: https://xxxx/xxx.png.
-
string terenkripsi Base64: String dalam format
data:{MIME_type};base64,{base64_data}, di mana:-
{base64_data}: String terenkripsi Base64 untuk gambar.
-
{MIME_type}: Jenis MIME gambar, yang harus sesuai dengan format file.
Format
Jenis MIME
JPEG
image/jpeg
JPG
image/jpeg
PNG
image/png
BMP
image/bmp
WEBP
image/webp
-
-
Audio input
-
Jumlah file audio: Anda dapat memberikan maksimal satu file audio (
type=driving_audio). -
Metode input:
-
URL publik: Mendukung protokol HTTP dan HTTPS. Contoh: https://xxxx/xxx.mp3.
-
Video masukan
-
Jumlah video: Anda dapat mengirimkan maksimal 1 klip video pertama (
type=first_clip). -
Metode input:
-
URL publik: Mendukung protokol HTTP dan HTTPS. Contoh: https://xxxx/xxx.mp4.
-
Video output
-
Jumlah video: 1.
-
Spesifikasi video output: Spesifikasi yang didukung bervariasi berdasarkan model. Untuk detailnya, lihat Ketersediaan.
-
Kedaluwarsa URL video output: 24 jam.
-
Dimensi video output: Model menentukan dimensi berdasarkan frame pertama input atau klip video pertama dan pengaturan
resolution.Model mempertahankan rasio aspek asli media input. Model menskalakan jumlah piksel total agar mendekati target yang ditetapkan oleh parameter
resolution, dan menyesuaikan lebar serta tinggi agar menjadi kelipatan 16.
Penagihan dan batas laju
-
Lihat Harga model untuk detail kuota gratis dan harga.
-
Lihat Wan untuk detail batas laju.
-
Detail penagihan:
-
Input gratis. Output ditagih berdasarkan durasi dalam detik setiap video yang berhasil dihasilkan.
-
Panggilan gagal atau error pemrosesan tidak dikenai biaya atau mengurangi kuota gratis untuk pengguna baru.
-
Fitur image-to-video juga mendukung Rencana Hemat.
-
Referensi API
FAQ
T: Apa yang baru di wan2.7-i2v?
J: wan2.7-i2v memperkenalkan kemampuan baru berikut dibandingkan model wan2.6-i2v dan sebelumnya:
-
Model ini mendukung tiga tugas utama: generasi video dari frame pertama, generasi video dari frame pertama dan terakhir, serta kelanjutan video. Model sebelumnya hanya mendukung generasi video dari frame pertama.
-
Anda dapat mengirimkan media multimodal, seperti gambar, audio, dan video, menggunakan array
mediaterpadu. Model sebelumnya hanya mendukung pengiriman gambar dengan parameterimg_url.
T: Bagaimana cara membuat video multi-shot?
J: Tentukan struktur shot dalam prompt. Anda dapat menggunakan metode berikut:
-
Spesifikasi langsung: Sertakan "generate a multi-shot video" dalam
prompt. -
Storyboard atau stempel waktu: Jelaskan setiap shot dengan rentang waktu. Misalnya, "Shot pertama: wide shot, seorang anak laki-laki menyanyikan rap dan menari" atau "Shot pertama [1-5dtk]: wide shot, seorang anak laki-laki menyanyikan rap dan menari. Shot kedua [6-10dtk]: kamera beralih ke penonton yang bersorak."
-
Jika Anda tidak secara eksplisit menentukan struktur shot, model akan menginferensinya dari
prompt.
T: Mengapa saya tidak bisa mengatur rasio aspek video?
J: API saat ini tidak mendukung pengaturan rasio aspek secara langsung. Sebagai gantinya, Anda harus mengatur resolusi menggunakan parameter resolution.
Parameter resolution mengontrol jumlah piksel total video, bukan rasio aspek tetap. Model mempertahankan rasio aspek asli perkiraan dari frame pertama input atau klip video pertama dan menyesuaikan lebar serta tinggi agar menjadi kelipatan bilangan bulat 16 untuk pengkodean video.



