Wan 2.2 モデルは、最初のフレーム、最後のフレーム、およびテキストプロンプトからスムーズなトランジションを持つ動画を生成します。
関連ドキュメント: ユーザーガイド
注意事項
API 呼び出しが成功するようにするには、ご利用のモデル、エンドポイント URL、および API キーが同一リージョンに存在している必要があります。リージョンをまたいだ呼び出しは失敗します。
モデルの選択: モデルが利用可能なリージョンを確認してください。
URL の選択: ご利用のリージョンに対応するエンドポイント URL を選択してください。HTTP URL および DashScope SDK URL の両方がサポートされています。
SDK のインストール: SDK を使用して API 呼び出しを行うには、DashScope SDK をインストールしてください。
このトピックのコード例は、シンガポール 向けです。
HTTP 呼び出し
画像から動画へのタスクは通常 1~5 分かかる長時間実行操作であるため、API は非同期呼び出しを使用します。このプロセスには、タスクの作成と結果のポーリングという 2 つのコアステップがあります。
ステップ 1: タスクの作成
シンガポール
POST https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/image2video/video-synthesis
中国 (北京)
POST https://dashscope.aliyuncs.com/api/v1/services/aigc/image2video/video-synthesis
タスクを作成した後は、返された
task_idを使用して結果をクエリします。task_idの有効期間は 24 時間です。重複するタスクを作成しないでください。代わりに、ポーリングを使用して結果を取得してください。初心者向けのガイドについては、「Postman」をご参照ください。
リクエストパラメーター | 最初と最後のフレーム最初のフレーム、最後のフレーム、およびプロンプトに基づいて動画を生成します。 否定的なプロンプトnegative_prompt パラメーターを使用して、生成された動画から人物などの特定の要素を除外できます。 |
リクエストヘッダー | |
Content-Type リクエストのコンテンツタイプです。 | |
Authorization Model Studio API キーを使用してリクエストを認証します。例:Bearer sk-xxxx。 | |
X-DashScope-Async 非同期処理を有効にします。HTTP リクエストでは非同期呼び出しのみがサポートされています。 重要 このリクエストヘッダーが不足している場合、「current user api does not support synchronous calls」というエラーが返されます。 | |
リクエスト本文 | |
model モデルの名前です。例:wan2.2-kf2v-flash。 詳細については、Model Studio コンソールをご確認ください。 | |
input プロンプトなどのタスクの主要な入力を含みます。 | |
parameters 動画処理パラメーターです。 |
応答パラメーター | 成功時の応答
エラー時の応答タスクの作成に失敗しました。「エラーメッセージ」をご参照ください。 |
output タスクの出力情報です。 | |
request_id トレースおよびトラブルシューティング用の一意のリクエスト識別子です。 | |
code エラーコードです。失敗したリクエストでのみ返されます。「エラーメッセージ」をご参照ください。 | |
message 詳細なエラーメッセージです。失敗したリクエストでのみ返されます。「エラーメッセージ」をご参照ください。 |
ステップ 2: 結果のクエリ
シンガポール
GET https://dashscope-intl.aliyuncs.com/api/v1/tasks/{task_id}
中国 (北京)
GET https://dashscope.aliyuncs.com/api/v1/tasks/{task_id}
ポーリングの推奨: 動画生成には数分かかります。15 秒などの適切な間隔でポーリングメカニズムを使用してください。
タスク状態の遷移: PENDING → RUNNING → SUCCEEDED または FAILED。
結果リンク: タスクが成功すると、24 時間有効な動画 URL が返されます。動画をダウンロードして、OSS などの永続ストレージに保存してください。
task_idの有効期間: 24 時間。この期間を過ぎると、クエリはタスクステータスとしてUNKNOWNを返します。
リクエストパラメーター | タスク結果のクエリ
各リージョンの API キーは異なります。詳細については、「API キーの取得」をご参照ください。 北京リージョンのモデルを使用する場合は、 |
リクエストヘッダー | |
Authorization Model Studio API キーを使用してリクエストを認証します。例:Bearer sk-xxxx。 | |
パスパラメーター | |
task_id タスクの ID です。 |
応答パラメーター | タスク成功動画 URL の有効期間は 24 時間のみで、その後自動的に消去されます。生成された動画は速やかに保存してください。 タスク失敗タスクが失敗した場合、 タスククエリの期限切れ
|
output タスクの出力情報です。 | |
usage タスクの使用量統計です。課金対象となるのは成功したタスクのみです。 | |
request_id トレースおよびトラブルシューティング用の一意のリクエスト識別子です。 |
DashScope SDK 呼び出し
SDK のパラメーター名はHTTP API とほぼ一致しており、パラメーター構造は各プログラミング言語の規則に従っています。
画像から動画へのタスクは長時間実行(通常 1~5 分)であるため、SDK は内部で非同期 HTTP 呼び出しを処理し、同期および非同期の両方の呼び出し方法をサポートしています。
実際の処理時間はキュー内のタスク数およびサービスパフォーマンスに依存します。しばらくお待ちください。
Python SDK 呼び出し
次のコードを実行する前に、DashScope Python SDK のバージョンが少なくとも1.23.8 であることを確認してください。
古いバージョンでは、「url error, please check url!」などのエラーが発生する可能性があります。更新するには、「SDK のインストール」をご参照ください。
モデルのリージョンに基づいて base_http_api_url を設定します。
シンガポール
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
北京
dashscope.base_http_api_url = 'https://dashscope.aliyuncs.com/api/v1'
サンプルコード
同期呼び出し
この例では、パブリック URL およびローカルファイルパスの 2 つの画像入力方法を使用した同期呼び出しを示します。
リクエスト例
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 キー(Model Studio API キー)を取得します。
api_key = os.getenv("DASHSCOPE_API_KEY")
# ========== 画像入力方法(いずれかを選択) ==========
# [方法 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('please wait...')
rsp = VideoSynthesis.call(api_key=api_key,
model="wan2.2-kf2v-flash",
prompt="Realistic style, a small black cat looks up at the sky curiously, the camera gradually rises from eye level, and finally captures its curious gaze from a top-down view.",
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('Failed, status_code: %s, code: %s, message: %s' %
(rsp.status_code, rsp.code, rsp.message))
if __name__ == '__main__':
sample_sync_call_kf2v()応答例
video_url の有効期間は 24 時間です。この期間内に動画をダウンロードしてください。{
"status_code": 200,
"request_id": "a37fafc3-907c-96f3-95a6-5b2a8268a3fd",
"code": null,
"message": "",
"output": {
"task_id": "4dba0092-da13-42b2-afb1-0f7b8a0f4643",
"task_status": "SUCCEEDED",
"video_url": "https://dashscope-result-wlcb-acdr-1.oss-cn-wulanchabu-acdr-1.aliyuncs.com/xxx.mp4?xxxxx",
"submit_time": "2025-05-23 15:50:12.404",
"scheduled_time": "2025-05-23 15:50:12.443",
"end_time": "2025-05-23 15:54:56.502",
"orig_prompt": "Realistic style, a small black cat looks up at the sky curiously, the camera gradually rises from eye level, and finally captures its curious gaze from a top-down view.",
"actual_prompt": "Realistic style, a small black cat looks up at the sky curiously, the camera gradually rises from eye level, and finally captures its curious gaze from a top-down view. The cat's yellow eyes are bright and expressive, its ears are pricked, and its whiskers are clearly visible. The background is a simple, light-colored wall that highlights the cat's black fur and focused expression. A close-up shot emphasizes the change in the cat's gaze and posture."
},
"usage": {
"video_count": 1,
"video_duration": 5,
"video_ratio": "standard"
}
}非同期呼び出し
この例では、非同期呼び出しを示します。これはすぐにタスク ID を返します。その後、タスクステータスをポーリングするか、タスクの完了を待つ必要があります。
リクエスト例
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 キー(Model Studio API キー)を取得します。
api_key = os.getenv("DASHSCOPE_API_KEY")
# ========== 画像入力方法(いずれかを選択) ==========
# [方法 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_async_call_kf2v():
print('please wait...')
rsp = VideoSynthesis.async_call(api_key=api_key,
model="wan2.2-kf2v-flash",
prompt="Realistic style, a small black cat looks up at the sky curiously, the camera gradually rises from eye level, and finally captures its curious gaze from a top-down view.",
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("task_id: %s" % rsp.output.task_id)
else:
print('Failed, status_code: %s, code: %s, message: %s' %
(rsp.status_code, rsp.code, rsp.message))
# タスク情報(タスクステータスを含む)を取得します。
status = VideoSynthesis.fetch(task=rsp, api_key=api_key)
if status.status_code == HTTPStatus.OK:
print(status.output.task_status) # タスクステータスを確認
else:
print('Failed, status_code: %s, code: %s, message: %s' %
(status.status_code, status.code, status.message))
# タスクの完了を待ちます。このメソッドは、タスクが完了するまで一定の間隔でフェッチエンドポイントをポーリングします。
rsp = VideoSynthesis.wait(task=rsp, api_key=api_key)
print(rsp)
if rsp.status_code == HTTPStatus.OK:
print(rsp.output.video_url)
else:
print('Failed, status_code: %s, code: %s, message: %s' %
(rsp.status_code, rsp.code, rsp.message))
if __name__ == '__main__':
sample_async_call_kf2v()応答例
1. タスク作成時の応答
{
"status_code": 200,
"request_id": "c86ff7ba-8377-917a-90ed-xxxxxx",
"code": "",
"message": "",
"output": {
"task_id": "721164c6-8619-4a35-a6d9-xxxxxx",
"task_status": "PENDING",
"video_url": ""
},
"usage": null
}2. 完了したタスクの応答例
video_url の有効期間は 24 時間です。この期間内に動画をダウンロードしてください。{
"status_code": 200,
"request_id": "efa545b3-f95c-9e3a-a3b6-xxxxxx",
"code": null,
"message": "",
"output": {
"task_id": "721164c6-8619-4a35-a6d9-xxxxxx",
"task_status": "SUCCEEDED",
"video_url": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.mp4?xxxxx",
"submit_time": "2025-02-12 11:03:30.701",
"scheduled_time": "2025-02-12 11:06:05.378",
"end_time": "2025-02-12 11:12:18.853",
"orig_prompt": "Realistic style, a small black cat looks up at the sky curiously, the camera gradually rises from eye level, and finally captures its curious gaze from a top-down view.",
"actual_prompt": "Realistic style, a small black cat looks up at the sky curiously, the camera gradually rises from eye level, and finally captures its curious gaze from a top-down view. The cat's fur is jet-black and glossy, its eyes are large and bright with golden pupils. It looks up with its ears pricked, appearing exceptionally focused. After the camera moves up, the cat turns to face the camera, its eyes filled with curiosity and alertness. The background is simple, highlighting the cat's detailed features. A close-up shot with soft, natural light."
},
"usage": {
"video_count": 1,
"video_duration": 5,
"video_ratio": "standard"
}
}Java SDK 呼び出し
次のコードを実行する前に、DashScope Java SDK のバージョンが少なくとも 2.20.9 であることを確認してください。
古いバージョンでは、「url error, please check url!」などのエラーが発生する可能性があります。更新するには、「SDK のインストール」をご参照ください。
サンプルコード
同期呼び出し
この例では、パブリック URL およびローカルファイルパスの 2 つの画像入力方法を使用した同期呼び出しを示します。
リクエスト例
// 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 キー(Model Studio API キー)を取得します。
static String apiKey = System.getenv("DASHSCOPE_API_KEY");
/**
* 画像入力方法(いずれかを選択):
*
* [方法 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("Realistic style, a small black cat looks up at the sky curiously, the camera gradually rises from eye level, and finally captures its curious gaze from a top-down view.")
.firstFrameUrl(firstFrameUrl)
.lastFrameUrl(lastFrameUrl)
.parameters(parameters)
.build();
VideoSynthesisResult result = null;
try {
// 同期呼び出しを行います。これには時間がかかる場合があります。
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();
}
}応答例
video_url の有効期間は 24 時間です。この期間内に動画をダウンロードしてください。{
"request_id": "e6bb4517-c073-9c10-b748-dedb8c11bb41",
"output": {
"task_id": "984784fe-83c1-4fc4-88c7-52c2c1fa92a2",
"task_status": "SUCCEEDED",
"video_url": "https://dashscope-result-wlcb-acdr-1.oss-cn-wulanchabu-acdr-1.aliyuncs.com/xxx.mp4?xxxxx"
},
"usage": {
"video_count": 1,
"video_duration": 5,
"video_ratio": "standard"
}
}非同期呼び出し
この例では、非同期呼び出しを示します。これはすぐにタスク ID を返します。その後、タスクステータスをポーリングするか、タスクの完了を待つ必要があります。
リクエスト例
// 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 Kf2vAsync {
static {
Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
}
// 環境変数から DashScope API キー(Model Studio API キー)を取得します。
static String apiKey = System.getenv("DASHSCOPE_API_KEY");
/**
* 画像入力方法(いずれかを選択):
*
* [方法 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 asyncCall(){
// パラメーターを設定します。
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("Realistic style, a small black cat looks up at the sky curiously, the camera gradually rises from eye level, and finally captures its curious gaze from a top-down view.")
.firstFrameUrl(firstFrameUrl)
.lastFrameUrl(lastFrameUrl)
.parameters(parameters)
.build();
VideoSynthesisResult result = null;
try {
// 非同期呼び出しを行います。
result = videoSynthesis.asyncCall(param);
} catch (ApiException | NoApiKeyException e){
throw new RuntimeException(e.getMessage());
} catch (InputRequiredException e) {
throw new RuntimeException(e);
}
System.out.println(JsonUtils.toJson(result));
String taskId = result.getOutput().getTaskId();
System.out.println("taskId=" + taskId);
try {
result = videoSynthesis.wait(taskId, apiKey);
} catch (ApiException | NoApiKeyException e){
throw new RuntimeException(e.getMessage());
}
System.out.println(JsonUtils.toJson(result));
System.out.println(JsonUtils.toJson(result.getOutput()));
}
public static void main(String[] args){
asyncCall();
}
}応答例
1. タスク作成時の応答
{
"request_id": "5dbf9dc5-4f4c-9605-85ea-xxxxxxxx",
"output": {
"task_id": "7277e20e-aa01-4709-xxxxxxxx",
"task_status": "PENDING"
}
}2. 完了したタスクの応答例
video_url の有効期間は 24 時間です。この期間内に動画をダウンロードしてください。{
"request_id": "1625235c-c13e-93ec-aff7-xxxxxxxx",
"output": {
"task_id": "464a5e46-79a6-46fd-9823-xxxxxxxx",
"task_status": "SUCCEEDED",
"video_url": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.mp4?xxxxxx"
},
"usage": {
"video_count": 1,
"video_duration": 5,
"video_ratio": "standard"
}
}制限事項
データ保持期間: タスク
task_idおよび動画video_urlは 24 時間保持され、その後はクエリまたはダウンロードできなくなります。オーディオサポート: このサービスはサイレント動画のみを生成します。オーディオを生成するには、音声合成を使用してください。
Content Moderation: Content Moderation は、すべての入力プロンプト、画像、および出力動画をレビューします。コンテンツが利用ポリシーに違反している場合、「IPInfringementSuspect」または「DataInspectionFailed」エラーが返されます。詳細については、「エラーメッセージ」をご参照ください。
エラーコード
モデル呼び出しが失敗した場合は、「エラーメッセージ」をご参照いただき、トラブルシューティングを行ってください。
よくある質問
Q: 特定の縦横比を生成するにはどうすればよいですか?
A: 出力動画の縦横比は最初のフレーム画像(first_frame_url)に依存します。ただし、正確な比率(たとえば厳密な 3:4)は保証できません。わずかにずれる可能性があります。
縦横比がずれる理由
モデルは入力画像の縦横比をベースラインとして使用し、選択した
resolution設定の総ピクセル数に基づいて最も近い有効な解像度を計算します。動画の幅および高さは 16 の倍数である必要があるため、モデルは最終解像度をわずかに調整します。たとえば、750×1000 の入力画像(縦横比 3:4 または 0.75)を提供し、
resolutionを「720P」(約 920,000 ピクセルをターゲット)に設定した場合、実際の出力は 816×1104(縦横比約 0.739、約 900,000 ピクセル)になる可能性があります。
推奨事項:
入力画像: 最良の結果を得るには、ターゲット縦横比に一致する最初のフレーム画像を使用してください。
後処理: 厳密な縦横比が必要な場合は、ビデオ編集ツールを使用して生成された動画をトリミングするか、黒枠を追加してください。
Q: 動画ストレージのドメイン名ホワイトリストを取得するにはどうすればよいですか?
A: モデルによって生成された動画は OSS に保存されます。API は一時的なパブリック URL を返します。このダウンロード URL のファイアウォールホワイトリストを設定するには、次の点にご注意ください。基盤となるストレージは動的に変更される可能性があります。このトピックでは、古い情報によるアクセス障害を防ぐため、固定の OSS ドメイン名ホワイトリストを提供していません。セキュリティ制御要件がある場合は、アカウントマネージャーに連絡して、最新の OSS ドメイン名リストを取得してください。