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 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 secara online (Singapura | Virginia | Tiongkok (Beijing)) | Referensi API
Mulai cepat
| Masukan prompt | Segmen video awal input (2 dtk) | Masukkan gambar frame terakhir | Video output (12 dtk, kelanjutan 10 dtk) |
Seorang pria menunduk melihat 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.
SDK Python
PentingPastikan SDK Python DashScope Anda versi 1.25.16 atau lebih baru sebelum menjalankan kode berikut.
Jika Anda menggunakan versi yang lebih lama, mungkin terjadi 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 berbeda-beda per 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 Studio Model Anda: api_key="sk-xxx"
# Kunci API berbeda-beda per 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 melihat 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('Gagal, status_code: %s, code: %s, message: %s' %
(rsp.status_code, rsp.code, rsp.message))
if __name__ == '__main__':
sample_sync_call()
SDK Java
PentingPastikan SDK Java DashScope Anda versi 2.22.14 atau lebih baru sebelum menjalankan kode berikut.
Jika Anda menggunakan versi yang lebih lama, mungkin terjadi 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 berbeda-beda per 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 Studio Model Anda: apiKey="sk-xxx"
// Kunci API berbeda-beda per 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 melihat 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 tugascurl --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 melihat 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 tugasGanti {task_id} dengan nilai task_id yang dikembalikan oleh panggilan API sebelumnya. task_id berlaku untuk kueri selama 24 jam. Ganti {WorkspaceId} dengan ID ruang kerja aktual Anda.
curl -X GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id} \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"
video_urlberlaku selama 24 jam. Unduh video 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 berbeda-beda per wilayah. Sumber daya terisolasi antar wilayah. Untuk model yang didukung di setiap wilayah, lihat Konsol Studio Model.
- Saat melakukan panggilan, pastikan model, URL endpoint, dan Kunci API Anda semuanya berasal dari wilayah yang sama. Panggilan lintas wilayah akan gagal.
CatatanKode 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, misalnya untuk sinkronisasi gerakan 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: |
SDK Python
Pastikan versi SDK Python DashScope Anda adalah
1.25.16atau 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 berbeda-beda per 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 Studio Model Anda: api_key="sk-xxx"
# Kunci API berbeda-beda per 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('Gagal, 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.14atau 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 Tiongkok (Beijing), gunakan https://{WorkspaceId}.cn-beijing.maas.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 Studio Model Anda: apiKey="sk-xxx"
// Kunci API berbeda-beda per 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 tugascurl --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 tugasGanti {task_id} dengan nilai task_id yang dikembalikan oleh panggilan API sebelumnya. task_id berlaku untuk kueri selama 24 jam. Ganti {WorkspaceId} dengan ID ruang kerja aktual Anda.
curl -X GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id} \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"
video_urlberlaku selama 24 jam. Unduh video 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 output |
Di pagi hari saat matahari terbit, sebuah labu kecil berembun duduk di kebun labu. Tiba-tiba, labu tersebut retak dengan suara "KRACK". Cahaya keemasan memancar dari celah saat labu terbelah, melepaskan hembusan kabut putih. Seekor kelinci kecil muncul di tengah labu yang terbuka. | ![]() | ![]() |
SDK Python
Pastikan versi SDK Python DashScope Anda adalah
1.25.16atau 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 berbeda-beda per 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 Studio Model Anda: api_key="sk-xxx"
# Kunci API berbeda-beda per 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 hari saat matahari terbit, sebuah labu kecil berembun duduk di kebun labu. Tiba-tiba, labu tersebut retak dengan suara \"KRACK\". 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('Gagal, status_code: %s, code: %s, message: %s' %
(rsp.status_code, rsp.code, rsp.message))
if __name__ == '__main__':
sample_sync_call()
SDK Java
Pastikan versi SDK Java DashScope Anda adalah
2.22.14atau 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 Tiongkok (Beijing), gunakan https://{WorkspaceId}.cn-beijing.maas.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 Studio Model Anda: apiKey="sk-xxx"
// Kunci API berbeda-beda per 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 hari saat matahari terbit, sebuah labu kecil berembun duduk di kebun labu. Tiba-tiba, labu tersebut retak dengan suara \"KRACK\". 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 tugascurl --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 hari saat matahari terbit, sebuah labu kecil berembun duduk di kebun labu. Tiba-tiba, labu tersebut retak dengan suara \"KRACK\". 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 tugasGanti {task_id} dengan nilai task_id yang dikembalikan oleh panggilan API sebelumnya. task_id berlaku untuk kueri selama 24 jam. Ganti {WorkspaceId} dengan ID ruang kerja aktual Anda.
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.
- Segmen video awal: Atur
typekefirst_clipuntuk melanjutkan video. - Segmen video awal + kelanjutan frame terakhir: Atur
typekefirst_clipdanlast_frame. Ini melanjutkan segmen video awal dan memastikan frame akhirnya sesuai dengan frame terakhir yang diberikan.
Kelanjutan dari klip awal
| Prompt | Segmen video awal | Video output |
Tukang roti membawa roti berlapis gula, 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 awal dan frame terakhir
| Prompt | Segmen video awal | Gambar frame terakhir | Video keluaran |
Pria tersebut menunduk melihat 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. | ![]() |
SDK Python
Pastikan versi SDK Python DashScope Anda adalah
1.25.16atau 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 berbeda-beda per 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 Studio Model Anda: api_key="sk-xxx"
# Kunci API berbeda-beda per 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 gula, 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('Gagal, status_code: %s, code: %s, message: %s' %
(rsp.status_code, rsp.code, rsp.message))
if __name__ == '__main__':
sample_sync_call()
SDK Java
Pastikan versi SDK Java DashScope Anda adalah
2.22.14atau 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 gula, 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 tugascurl --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 gula, 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 tugasGanti {task_id} dengan nilai task_id yang dikembalikan oleh panggilan API sebelumnya. task_id berlaku untuk kueri selama 24 jam. Ganti {WorkspaceId} dengan ID ruang kerja aktual Anda.
curl -X GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id} \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"
Aset media input
Teruskan 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.
CatatanHanya kombinasi media spesifik yang tercantum di bawah ini yang didukung. Kombinasi lain akan mengembalikan error.
// 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" }
]
}
// 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" }
]
}
// Kombinasi 1: Segmen video awal
{
"media": [
{ "type": "first_clip", "url": "https://example.com/video.mp4" }
]
}
// Kombinasi 2: Segmen video awal + 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 input
-
Jumlah video: Anda dapat mengirimkan maksimal 1 segmen video awal (
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 berbeda-beda per model. Untuk detailnya, lihat Ketersediaan.
-
Kadaluarsa URL video output: 24 jam.
-
Dimensi video output: Model menentukan dimensi berdasarkan frame pertama atau segmen video awal input dan pengaturan
resolution.Model mempertahankan rasio aspek asli dari 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 dari 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 rap dan menari" atau "Shot pertama [1-5dtk]: wide shot, seorang anak laki-laki 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 dari frame pertama atau segmen video awal input dan menyesuaikan lebar serta tinggi agar menjadi kelipatan bilangan bulat 16 untuk pengkodean video.



