Wanxiang の画像から動画への変換モデルは、最初のフレーム、最後のフレーム、およびテキストプロンプトを入力として、滑らかなトランジションを持つ動画を生成します。
動画仕様:固定長の動画(5 秒)、指定された解像度(480P、720P、または 1080P)。
その他の機能:インテリジェントなプロンプト書き換えおよびウォーターマークの追加もサポートしています。
関連リンク: API リファレンス | プロンプトガイド
クイックスタート
入力プロンプト | 最初のフレームの入力 | 最後のフレームの入力 | 出力動画(無音) |
雨に打たれる、かわいらしく少し悲しげな青いモンスターが立っています。カメラはゆっくりとズームインし、モンスターが空を見上げる瞬間に静止します。 |
|
|
API を呼び出す前に、API キーを取得し、その後 API キーを環境変数として構成してください(この手順は今後非推奨となり、API キーの構成プロセスに統合されます)。ソフトウェア開発キット(SDK)を使用して API を呼び出す場合は、DashScope SDK をインストールしてください。
Python SDK
以下のコードを実行する前に、DashScope Python SDK のバージョンが 1.25.8 以降 であることを確認してください。
それより古いバージョンでは、「url error, please check url!」などのエラーが発生する可能性があります。詳細については、SDK のインストール を参照して、SDK を更新してください。
import os
from http import HTTPStatus
from dashscope import VideoSynthesis
import dashscope
# 以下はシンガポールリージョン向けの URL です。リージョンによって URL は異なります。詳細については、https://www.alibabacloud.com/help/en/model-studio/image-to-video-by-first-and-last-frame-api-reference をご参照ください。
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
# API キーはリージョンによって異なります。詳細については、https://www.alibabacloud.com/help/en/model-studio/get-api-key をご参照ください。
api_key = os.getenv("DASHSCOPE_API_KEY", "YOUR_API_KEY")
print('しばらくお待ちください...')
rsp = VideoSynthesis.call(api_key=api_key,
model="wan2.2-kf2v-flash",
prompt="雨に打たれる、かわいらしく少し悲しげな青いモンスターが立っています。カメラはゆっくりとズームインし、モンスターが空を見上げる瞬間に静止します。",
first_frame_url="https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20260126/ixdxvt/wan-kf2v-blue-1.png",
last_frame_url="https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20260126/nhtdrc/wan-kf2v-blue-2.png",
duration=5, # 固定値(5)。変更しないでください。
prompt_extend=True,
watermark=True)
print(rsp)
if rsp.status_code == HTTPStatus.OK:
print("video_url:", rsp.output.video_url)
else:
print('失敗しました。status_code: %s、code: %s、message: %s' % (rsp.status_code, rsp.code, rsp.message))Java SDK
以下のコードを実行する前に、DashScope Java SDK のバージョンが 2.22.6 以降 であることを確認してください。
それより古いバージョンでは、「url error, please check url!」などのエラーが発生する可能性があります。詳細については、SDK のインストール を参照して、SDK を更新してください。
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesis;
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesisParam;
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesisResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.JsonUtils;
import com.alibaba.dashscope.utils.Constants;
public class Image2Video {
static {
// 以下はシンガポールリージョン向けの URL です。リージョンによって URL は異なります。詳細については、https://www.alibabacloud.com/help/en/model-studio/image-to-video-by-first-and-last-frame-api-reference をご参照ください。
Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
}
// 環境変数が設定されていない場合は、次の行を Model Studio API キーに置き換えてください:apiKey="sk-xxx"
// API キーはリージョンによって異なります。詳細については、https://www.alibabacloud.com/help/en/model-studio/get-api-key をご参照ください。
static String apiKey = System.getenv("DASHSCOPE_API_KEY");
public static void image2video() throws ApiException, NoApiKeyException, InputRequiredException {
VideoSynthesis vs = new VideoSynthesis();
VideoSynthesisParam param =
VideoSynthesisParam.builder()
.apiKey(apiKey)
.model("wan2.2-kf2v-flash")
.prompt("雨に打たれる、かわいらしく少し悲しげな青いモンスターが立っています。カメラはゆっくりとズームインし、モンスターが空を見上げる瞬間に静止します。")
.firstFrameUrl("https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20260126/ixdxvt/wan-kf2v-blue-1.png")
.lastFrameUrl("https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20260126/nhtdrc/wan-kf2v-blue-2.png")
.resolution("720P")
.promptExtend(true)
.watermark(true)
.build();
System.out.println("しばらくお待ちください...");
VideoSynthesisResult result = vs.call(param);
System.out.println(JsonUtils.toJson(result));
}
public static void main(String[] args) {
try {
image2video();
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}curl
ステップ 1:タスク ID を取得するためのタスクを作成
curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/image2video/video-synthesis' \
-H 'X-DashScope-Async: enable' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "wan2.2-kf2v-flash",
"input": {
"first_frame_url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20260126/ixdxvt/wan-kf2v-blue-1.png",
"last_frame_url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20260126/nhtdrc/wan-kf2v-blue-2.png",
"prompt": "雨に打たれる、かわいらしく少し悲しげな青いモンスターが立っています。カメラはゆっくりとズームインし、モンスターが空を見上げる瞬間に静止します。"
},
"parameters": {
"resolution": "720P",
"prompt_extend": true,
"watermark": true
}
}'ステップ 2:タスク ID を使用して結果を取得
{task_id} を、前の API 呼び出しで返された task_id の値に置き換えてください。
curl -X GET https://dashscope-intl.aliyuncs.com/api/v1/tasks/{task_id} \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"出力例
video_url は 24 時間有効です。動画を速やかにダウンロードしてください。{
"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",
...
},
...
}適用範囲
サポートされるモデルおよびリソースはリージョンによって異なり、相互に分離されています。API を呼び出す際は、モデル、エンドポイント URL、API キーがすべて同一のリージョンに属していることを確認してください。クロスリージョンでの呼び出しは失敗します。
サポートされるモデル:
国際
国際デプロイメントモードでは、アクセスポイントおよびデータストレージは シンガポールリージョン にあり、モデル推論の計算リソースは中国本土を除く世界中で動的にスケジュールされます。
モデル | 特徴 | 入力モダリティ | 出力動画仕様 |
wan2.2-kf2v-flash | 音声なしの動画 モデル 2.1 と比較して、全体的な安定性および成功率が向上 | テキスト、画像 | 解像度オプション:480P、720P、1080P 動画再生時間:5 秒 定義済み仕様:30 fps、MP4(H.264 エンコーディング) |
wan2.1-kf2v-plus | 音声なしの動画 | テキスト、画像 | 解像度オプション:720P 動画再生時間:5 秒 定義済み仕様:30 fps、MP4(H.264 エンコーディング) |
中国本土
中国本土デプロイメントモードでは、アクセスポイントおよびデータストレージは 北京リージョン にあり、モデル推論の計算リソースは中国本土に限定されています。
モデル | 特徴 | 入力モダリティ | 出力動画仕様 |
wan2.2-kf2v-flash | 音声なしの動画 モデル 2.1 と比較して、全体的な安定性および成功率が向上 | テキスト、画像 | 解像度オプション:480P、720P、1080P 動画再生時間:5 秒 定義済み仕様:30 fps、MP4(H.264 エンコーディング) |
wanx2.1-kf2v-plus | 音声なしの動画 | テキスト、画像 | 解像度オプション:720P 動画再生時間:5 秒 定義済み仕様:30 fps、MP4(H.264 エンコーディング) |
このトピックのサンプルコードは シンガポール リージョンに適用されます。
主な機能
最初と最後のフレームからの動画生成
対応モデル:すべてのモデル。
機能概要:最初のフレームと最後のフレームを入力として、滑らかなトランジションを持つ無音動画を生成します。
パラメーター:
first_frame_url:必須。最初のフレームの画像を指定する必要があります。last_frame_url:必須。最後のフレームの画像を指定する必要があります。prompt:任意。動画内の視覚的変化を制御するために指定します。
入力プロンプト | 最初のフレームの入力 | 最後のフレームの入力 | 出力動画(無音) |
リアリスティックなスタイル。小さな黒猫が空を好奇に見上げています。カメラは水平角度から徐々に上昇し、最終的に上から猫の好奇に満ちた目を捉えます。 |
|
|
Python SDK
DashScope Python SDK のバージョンが 1.25.8 以降であることを確認してください。詳細については、SDK のインストール を参照して、SDK を更新してください。import os
from http import HTTPStatus
from dashscope import VideoSynthesis
import dashscope
# 以下はシンガポールリージョン向けの URL です。リージョンによって URL は異なります。詳細については、https://www.alibabacloud.com/help/en/model-studio/image-to-video-by-first-and-last-frame-api-reference をご参照ください。
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
# API キーはリージョンによって異なります。詳細については、https://www.alibabacloud.com/help/en/model-studio/get-api-key をご参照ください。
api_key = os.getenv("DASHSCOPE_API_KEY", "YOUR_API_KEY")
def sample_async_call_kf2v():
# 非同期呼び出し。task_id を返します。
rsp = VideoSynthesis.async_call(api_key=api_key,
model="wan2.2-kf2v-flash",
prompt="リアリスティックなスタイル。小さな黒猫が空を好奇に見上げています。カメラは水平角度から徐々に上昇し、最終的に上から猫の好奇に満ちた目を捉えます。",
first_frame_url="https://wanx.alicdn.com/material/20250318/first_frame.png",
last_frame_url="https://wanx.alicdn.com/material/20250318/last_frame.png",
duration=5, # 固定値(5)。変更しないでください。
prompt_extend=True,
watermark=True)
print(rsp)
if rsp.status_code == HTTPStatus.OK:
print("task_id: %s" % rsp.output.task_id)
else:
print('失敗しました。status_code: %s、code: %s、message: %s' % (rsp.status_code, rsp.code, rsp.message))
# 非同期タスクの完了を待機
rsp = VideoSynthesis.wait(task=rsp, api_key=api_key)
print(rsp)
if rsp.status_code == HTTPStatus.OK:
print(rsp.output.video_url)
else:
print('失敗しました。status_code: %s、code: %s、message: %s' % (rsp.status_code, rsp.code, rsp.message))
if __name__ == '__main__':
sample_async_call_kf2v()Java SDK
DashScope Java SDK のバージョンが 2.22.6 以降であることを確認してください。詳細については、SDK のインストール を参照して、SDK を更新してください。import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesis;
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesisParam;
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesisResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.JsonUtils;
import com.alibaba.dashscope.utils.Constants;
public class Image2Video {
static {
// 以下はシンガポールリージョン向けの URL です。リージョンによって URL は異なります。詳細については、https://www.alibabacloud.com/help/en/model-studio/image-to-video-by-first-and-last-frame-api-reference をご参照ください。
Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
}
// 環境変数が設定されていない場合は、次の行を Model Studio API キーに置き換えてください:apiKey="sk-xxx"
// API キーはリージョンによって異なります。詳細については、https://www.alibabacloud.com/help/en/model-studio/get-api-key をご参照ください。
static String apiKey = System.getenv("DASHSCOPE_API_KEY");
public static void image2video() throws ApiException, NoApiKeyException, InputRequiredException {
VideoSynthesis vs = new VideoSynthesis();
VideoSynthesisParam param =
VideoSynthesisParam.builder()
.apiKey(apiKey)
.model("wan2.2-kf2v-flash")
.prompt("リアリスティックなスタイル。小さな黒猫が空を好奇に見上げています。カメラは水平角度から徐々に上昇し、最終的に上から猫の好奇に満ちた目を捉えます。")
.firstFrameUrl("https://wanx.alicdn.com/material/20250318/first_frame.png")
.lastFrameUrl("https://wanx.alicdn.com/material/20250318/last_frame.png")
.resolution("720P")
.promptExtend(true)
.watermark(true)
.build();
// 非同期呼び出し
VideoSynthesisResult task = vs.asyncCall(param);
System.out.println(JsonUtils.toJson(task));
System.out.println("しばらくお待ちください...");
// 結果を取得
VideoSynthesisResult result = vs.wait(task, apiKey);
System.out.println(JsonUtils.toJson(result));
}
public static void main(String[] args) {
try {
image2video();
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}curl
ステップ 1:タスク ID を取得するためのタスクを作成
curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/image2video/video-synthesis' \
-H 'X-DashScope-Async: enable' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "wan2.2-kf2v-flash",
"input": {
"first_frame_url": "https://wanx.alicdn.com/material/20250318/first_frame.png",
"last_frame_url": "https://wanx.alicdn.com/material/20250318/last_frame.png",
"prompt": "リアリスティックなスタイル。小さな黒猫が空を好奇に見上げています。カメラは水平角度から徐々に上昇し、最終的に上から猫の好奇に満ちた目を捉えます。"
},
"parameters": {
"resolution": "720P",
"prompt_extend": true,
"watermark": true
}
}'ステップ 2:タスク ID を使用して結果を取得
{task_id} を、前の API 呼び出しで返された task_id の値に置き換えてください。
curl -X GET https://dashscope-intl.aliyuncs.com/api/v1/tasks/{task_id} \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"画像の提供方法
画像の枚数:最初のフレームと最後のフレームの各 1 枚。
入力方法:画像の URL、ローカルファイルパス。
サンプルコード:画像の提供方法(複数)
Python SDK
import os
from http import HTTPStatus
# dashscope sdk >= 1.23.4
from dashscope import VideoSynthesis
import dashscope
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
# 環境変数から DashScope API キー(Alibaba Cloud Model Studio API キー)を取得
api_key = os.getenv("DASHSCOPE_API_KEY")
# ========== 画像入力方法(1 つを選択) ==========
# [方法 1] パブリック画像 URL を使用
first_frame_url = "https://wanx.alicdn.com/material/20250318/first_frame.png"
last_frame_url = "https://wanx.alicdn.com/material/20250318/last_frame.png"
# [方法 2] ローカルファイルパスを使用(file:// + ファイルパス)
# 絶対パスを使用
# first_frame_url = "file://" + "/path/to/your/first_frame.png" # Linux/macOS
# last_frame_url = "file://" + "C:/path/to/your/last_frame.png" # Windows
# または相対パスを使用
# first_frame_url = "file://" + "./first_frame.png" # 実際のパスを指定してください
# last_frame_url = "file://" + "./last_frame.png" # 実際のパスを指定してください
def sample_sync_call_kf2v():
print('しばらくお待ちください...')
rsp = VideoSynthesis.call(api_key=api_key,
model="wan2.2-kf2v-flash",
prompt="リアリスティックなスタイル。小さな黒猫が空を好奇に見上げています。カメラは水平角度から徐々に上昇し、最終的に上から猫の好奇に満ちた目を捉えます。",
first_frame_url=first_frame_url,
last_frame_url=last_frame_url,
resolution="720P",
prompt_extend=True)
print(rsp)
if rsp.status_code == HTTPStatus.OK:
print(rsp.output.video_url)
else:
print('失敗しました。status_code: %s、code: %s、message: %s' %
(rsp.status_code, rsp.code, rsp.message))
if __name__ == '__main__':
sample_sync_call_kf2v()Java SDK
// Copyright (c) Alibaba, Inc. and its affiliates.
// dashscope sdk >= 2.20.1
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.HashMap;
import java.util.Map;
public class Kf2vSyncIntl {
static {
Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
}
// 環境変数から DashScope API キー(Alibaba Cloud Model Studio API キー)を取得
static String apiKey = System.getenv("DASHSCOPE_API_KEY");
/**
* 画像入力方法(1 つを選択):
* [方法 1] パブリック URL
*/
static String firstFrameUrl = "https://wanx.alicdn.com/material/20250318/first_frame.png";
static String lastFrameUrl = "https://wanx.alicdn.com/material/20250318/last_frame.png";
/**
* [方法 2] ローカルファイルパス(file:// + 絶対パスまたは file:/// + 絶対パス)
*/
// static String firstFrameUrl = "file://" + "/your/path/to/first_frame.png"; // Linux/macOS
// static String lastFrameUrl = "file:///" + "C:/path/to/your/img.png"; // Windows
public static void syncCall() {
Map<String, Object> parameters = new HashMap<>();
parameters.put("prompt_extend", true);
parameters.put("resolution", "720P");
VideoSynthesis videoSynthesis = new VideoSynthesis();
VideoSynthesisParam param =
VideoSynthesisParam.builder()
.apiKey(apiKey)
.model("wan2.2-kf2v-flash")
.prompt("リアリスティックなスタイル。小さな黒猫が空を好奇に見上げています。カメラは水平角度から徐々に上昇し、最終的に上から猫の好奇に満ちた目を捉えます。")
.firstFrameUrl(firstFrameUrl)
.lastFrameUrl(lastFrameUrl)
.parameters(parameters)
.build();
VideoSynthesisResult result = null;
try {
System.out.println("---同期呼び出し、しばらくお待ちください----");
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();
}
}出力動画
動画の枚数:1 枚。
動画仕様:出力仕様はモデルによって異なります。詳細については、動画仕様 をご参照ください。
動画 URL の有効期限: 24 時間。
動画のディメンション:動画のディメンションは、最初に入力したフレームと
resolution設定によって決定されます。モデルは、最初に入力したフレームの縦横比を維持しようと試みながら、総ピクセル数を目標値に近づけるようにスケーリングします。ただし、ビデオエンコーディングの規格により、出力動画の幅と高さは 16 の倍数でなければなりません。そのため、モデルは自動的にディメンションをわずかに調整します。
たとえば、入力画像が 750 × 1000(縦横比 3:4 = 0.75)で、`resolution` を「720P」(目標ピクセル数約 920,000)に設定した場合、最終的な出力は 816 × 1104(縦横比 ≈ 0.739、ピクセル数 ≈ 900,000)となる可能性があり、幅と高さの両方が 16 の倍数になります。
課金および速度制限
モデルの無料クォータおよび単価については、モデルの料金 をご参照ください。
モデルの速度制限については、Wanxiang シリーズ をご参照ください。
課金の詳細:
入力は課金されません。出力は、正常に生成された動画の 秒数 に基づいて課金されます。
モデル呼び出しの失敗や処理エラーは、一切課金されず、新規ユーザー向けの無料クォータ を消費しません。
画像から動画への変換は、節約プラン もサポートしています。
API ドキュメント
よくある質問
Q:3:4 のような特定の縦横比で動画を生成するにはどうすればよいですか?
A:API では、現在、動画の縦横比を直接指定することはできません。resolution パラメーターを使用して、動画の解像度のみを設定できます。
resolution パラメーターは、動画の固定縦横比ではなく、総ピクセル数を制御します。モデルは、最初のフレーム(first_frame_url)の元の縦横比を優先し、ビデオエンコーディングの要件(つまり、幅と高さが 16 の倍数である必要がある)を満たすためにわずかな調整を行います。したがって、3:4 に近い縦横比の出力動画を得るには、3:4 の縦横比を持つ最初のフレームをアップロードすることをお勧めします。モデルはこの比率をできる限り維持しようとします。
たとえば、入力画像が 750 × 1000(縦横比 3:4 = 0.75)で、`resolution` を「720P」(目標ピクセル数約 920,000)に設定した場合、最終的な出力は 816 × 1104(縦横比 ≈ 0.739、ピクセル数 ≈ 900,000)となる可能性があり、幅と高さの両方が 16 の倍数になります。
Q:SDK コードを実行すると「url error, please check url!」というエラーが表示されるのはなぜですか?
A:以下の点を確認してください。
DashScope Python SDK のバージョンが
1.25.8以降であることです。DashScope Java SDK のバージョンが
2.22.6以降であることです。
それより古いバージョンでは、「url error, please check url!」というエラーが発生する可能性があります。詳細については、SDK のアップグレード を参照して、SDK を更新してください。



