All Products
Search
Document Center

Alibaba Cloud Model Studio:Image-to-video 2.7

Last Updated:Sep 09, 2026

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 promptSegmen video awal input (2 dtk)Masukkan gambar frame terakhirVideo 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.

wan2

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 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 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 tugas

Ganti {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"
Contoh output

video_url berlaku 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 type ke first_frame. Model secara otomatis menambahkan audio ke video.
  • Frame pertama + audio: Atur type ke first_frame dan driving_audio. Model menggunakan audio tersebut untuk menggerakkan generasi video, misalnya untuk sinkronisasi gerakan bibir dan waktu aksi.
PromptGambar frame pertamaVideo 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.

rap

Audio input:

SDK Python

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 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.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 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 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. 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"
Contoh output

video_url berlaku 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 type ke first_frame dan last_frame. Model secara otomatis menambahkan audio ke video.
  • Frame pertama + frame terakhir + audio: Atur type ke first_frame, last_frame, dan driving_audio. Model menggunakan audio tersebut untuk menggerakkan generasi video.
PromptGambar frame pertamaGambar frame terakhirVideo 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.

wan2wan2

SDK Python

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 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.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 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 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 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 tugas

Ganti {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 type ke first_clip untuk melanjutkan video.
  • Segmen video awal + kelanjutan frame terakhir: Atur type ke first_clip dan last_frame. Ini melanjutkan segmen video awal dan memastikan frame akhirnya sesuai dengan frame terakhir yang diberikan.

Kelanjutan dari klip awal

PromptSegmen video awalVideo 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

PromptSegmen video awalGambar frame terakhirVideo 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.

wan2

SDK Python

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 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.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 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 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 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 tugas

Ganti {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:

Video input

  • Jumlah video: Anda dapat mengirimkan maksimal 1 segmen video awal (type=first_clip).

  • Metode input:

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

Referensi API Wan2.7-I2V

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 media terpadu. Model sebelumnya hanya mendukung pengiriman gambar dengan parameter img_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.