すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud Model Studio:Wan - first-and-last-frames-to-video API reference

最終更新日:Jan 09, 2026

Wan kf2v モデルは、開始フレーム画像、終了フレーム画像、およびテキストプロンプトに基づいて、スムーズに遷移する動画を作成します。サポートされている機能は次のとおりです。

  • 動画仕様:5 秒の固定動画長と指定された動画解像度 (480P、720P、または 1080P)。

  • インテリジェントなプロンプト最適化:入力されたプロンプトを自動的に再書き込みし、短いプロンプトの結果を大幅に改善します。

  • その他:「AI Generated」のウォーターマークを追加するかどうかを選択できます。

クイックリンク: Wan 公式サイトでオンラインで試す

説明

Wan 公式サイトの機能は、API がサポートする機能と異なる場合があります。このドキュメントでは、API の機能について説明し、機能の変更に応じて更新されます。

モデル概要

機能

入力例

出力動画

開始フレーム画像

終了フレーム画像

プロンプト

開始フレームと終了フレームからの動画生成

first_frame

last_frame

リアルなスタイル、小さな黒猫が好奇心旺盛に空を見上げ、カメラは目線の高さから徐々に上昇し、最終的にトップダウンビューでその好奇心に満ちた視線を捉える。

モデル

説明

出力動画の仕様

wan2.2-kf2v-flash 推奨

Wan 2.2 Flash Edition (無音動画)

2.1 モデルより 50% 高速で、安定性と成功率が向上しています。

解像度オプション:480P、720P、1080P

動画の長さ:5 秒

固定仕様:30 fps、MP4 (H.264 エンコーディング)

wan2.1-kf2v-plus

Wan 2.1 Professional Edition (無音動画)

複雑な動き、リアルな物理演算、詳細なビジュアル。

解像度オプション:720P

動画の長さ:5 秒

固定仕様:30 fps、MP4 (H.264 エンコーディング)

説明

呼び出しを行う前に、「モデルリストと料金」で各リージョンでサポートされているモデルをご確認ください。

前提条件

呼び出しを行う前に、「API キーの取得」と「API キーを環境変数として設定」を行ってください。SDK を使用して呼び出しを行う場合は、Python または Java 用の「DashScope SDK のインストール」を行ってください。

重要

北京リージョンとシンガポールリージョンでは、API キーリクエストエンドポイントがそれぞれ異なります。これらを混同して使用しないでください。リージョンをまたいだ呼び出しは、認証失敗やサービスエラーの原因となります。

HTTP 呼び出し

image-to-video タスクは時間がかかり、通常 1〜5 分かかるため、API は非同期呼び出しを使用します。プロセスには、タスクの作成 -> 結果のポーリングという 2 つのコアステップが含まれます。手順は次のとおりです。

実際の所要時間は、キュー内のタスク数とサービスの状況によって異なります。結果が出るまでしばらくお待ちください。

ステップ 1:タスクを作成し、タスク ID を取得する

シンガポール: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 時間有効です。 重複したタスクを作成しないでください。 ポーリングを使用して結果を取得してください。

リクエストパラメーター

開始フレームと終了フレームからの動画生成

開始フレーム、終了フレーム、およびプロンプトに基づいて動画を生成します。

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": "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."
    },
    "parameters": {
        "resolution": "480P",
        "prompt_extend": true
    }
}'

ネガティブプロンプトの使用

negative_prompt パラメーターを使用して、生成される動画に「人物」要素が含まれないように指定します。

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.1-kf2v-plus",
    "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": "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.",
        "negative_prompt": "people"
    },
    "parameters": {
        "resolution": "720P",
        "prompt_extend": true
    }
}'
ヘッダー

Content-Type string (必須)

リクエストのコンテンツタイプ。application/json に設定します。

Authorization string (必須)

認証情報。この API は、認証に Model Studio API キーを使用します。例:`Bearer sk-xxxx`。

X-DashScope-Async string (必須)

非同期処理のための設定パラメーター。HTTP リクエストは非同期処理のみをサポートします。このパラメーターを enable に設定する必要があります。

重要

このリクエストヘッダーがない場合、エラーメッセージ `current user api does not support synchronous calls` が返されます。

リクエストボディ

model string (必須)

モデル名。例:wan2.2-kf2v-flash。

詳細については、「モデル」をご参照ください。

input object (必須)

プロンプトなどの基本的な入力情報。

プロパティ

prompt string (任意)

テキストプロンプト。プロンプトは中国語と英語の両方をサポートします。長さは 800 文字を超えることはできません。各漢字または文字は 1 文字としてカウントされます。超過した文字は自動的に切り捨てられます。

開始フレームと終了フレームの間で主題やシーンが大幅に変わる場合は、カメラの動き (カメラが左に移動) や主題の動き (人物が前方に走る) などの遷移プロセスを記述してください。

例:小さな黒猫が好奇心旺盛に空を見上げます。カメラは目線の高さから徐々に上昇し、最終的にトップダウンビューでその好奇心に満ちた視線を捉えます。

プロンプトの使用に関する詳細については、「Text-to-video/image-to-video プロンプトガイド」をご参照ください。

negative_prompt string (任意)

ネガティブプロンプト。動画に表示したくないコンテンツを記述し、動画のコンテンツを制約することができます。

中国語と英語の両方をサポートします。長さは 500 文字を超えることはできません。超過した文字は自動的に切り捨てられます。

例:低解像度、エラー、最低品質、低品質、変形、余分な指、悪いプロポーション。

first_frame_url string (必須)

開始フレーム画像の URL。出力動画のアスペクト比は、開始フレーム画像のアスペクト比と一致します。

URL はパブリックにアクセス可能なアドレスであり、HTTP または HTTPS プロトコルをサポートする必要があります。

画像要件:

  • 画像フォーマット:JPEG、JPG、PNG (アルファチャンネルはサポートされていません)、BMP、または WEBP。

  • 画像解像度:幅と高さは 360〜2000 ピクセルの間である必要があります。

  • ファイルサイズ:10 MB 以下。

last_frame_url string (必須)

終了フレーム画像の URL。

URL はパブリックにアクセス可能で、HTTP または HTTPS プロトコルをサポートする必要があります。

画像制限

  • 画像フォーマット:JPEG、JPG、PNG (アルファチャンネルはサポートされていません)、BMP、または WEBP。

  • 画像解像度:幅と高さは 360〜2000 ピクセルの間である必要があります。終了フレーム画像の解像度は開始フレーム画像と異なっていてもかまいません。解像度が一致する必要はありません。

  • ファイルサイズ:10 MB 以下。

parameters object (任意)

動画処理パラメーター。

プロパティ

resolution string (任意)

重要

解像度はコストに直接影響します。同じモデルの場合、コストは次のようになります:1080P > 720P > 480P。呼び出しを行う前に、「モデル料金」を確認してください。

生成される動画の解像度レベル。このパラメーターは動画の鮮明度、つまり総ピクセル数のみを調整し、アスペクト比は変更しません。動画のアスペクト比は、first_frame_url パラメーターで指定された開始フレーム画像のアスペクト比と一致します

このパラメーターのデフォルト値と利用可能な列挙値は、`model` パラメーターに依存し、次のリストで説明されています:

  • wan2.2-kf2v-flash:オプション値は 480P、720P、1080P です。デフォルト値は 720P です。

  • wan2.1-kf2v-plus:オプション値は 720P です。デフォルト値は 720P です。

例:720P。

duration integer (任意)

重要

期間はコストに直接影響し、秒単位で課金されます。呼び出しを行う前に、「モデル料金」を確認してください。

生成される動画の長さ (秒)。このパラメーターは現在 5 に固定されており、変更できません。モデルは常に 5 秒の動画を生成します。

prompt_extend bool (任意)

プロンプトの再書き込みを有効にするかどうかを指定します。このパラメーターを有効にすると、大規模言語モデル (LLM) が入力プロンプトを再書き込みします。これにより、短いプロンプトの結果が大幅に改善されますが、処理時間が増加します。

  • true (デフォルト)

  • false

例:true。

watermark bool (任意)

画像の右下隅に「AI-generated」のウォーターマークを追加するかどうかを指定します。

  • false (デフォルト)

  • true

例:false。

seed integer (任意)

乱数シード。値は [0, 2147483647] の範囲の整数でなければなりません。

このパラメーターが指定されていない場合、システムは自動的にランダムなシードを生成します。結果の再現性を向上させるために、固定のシード値を設定できます。

モデルの生成は確率的であるため、同じシードを使用しても同一の結果が保証されるわけではないことに注意してください。

例:12345。

レスポンスパラメーター

成功レスポンス

`task_id` を保存して、タスクのステータスと結果をクエリします。

{
    "output": {
        "task_status": "PENDING",
        "task_id": "0385dc79-5ff8-4d82-bcb6-xxxxxx"
    },
    "request_id": "4909100c-7b5a-9f92-bfe5-xxxxxx"
}

エラーレスポンス

タスクの作成に失敗しました。詳細については、「エラーメッセージ」を参照して問題を解決してください。

{
    "code": "InvalidApiKey",
    "message": "No API-key provided.",
    "request_id": "7438d53d-6eb8-4596-8835-xxxxxx"
}

output object

タスクの出力情報。

プロパティ

task_id string

タスク ID。クエリは 24 時間有効です。

task_status string

タスクのステータス。

列挙

  • PENDING

  • RUNNING

  • SUCCEEDED

  • FAILED

  • CANCELED

  • UNKNOWN:タスクが存在しないか、ステータスが不明です。

request_id string

一意のリクエスト ID。この ID を使用して問題を追跡およびトラブルシューティングできます。

code string

エラーコード。リクエストが失敗した場合にのみ返されます。詳細については、「エラーメッセージ」をご参照ください。

message string

詳細なエラーメッセージ。リクエストが失敗した場合にのみ返されます。詳細については、「エラーメッセージ」をご参照ください。

ステップ 2:タスク ID で結果をクエリする

シンガポール: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 時間有効です。リンクを取得したら、すぐに動画をダウンロードし、Object Storage Service (OSS) などの永続的なストレージサービスに保存する必要があります。

  • `task_id` の有効期間24 時間。この期間を過ぎると、結果をクエリできなくなり、API はタスクステータスとして UNKNOWN を返します。

リクエストパラメーター

タスク結果のクエリ

86ecf553-d340-4e21-xxxxxxxxx を実際のタスク ID に置き換えてください。

API キーはリージョン固有です。「API キーの作成」。
北京リージョンのモデルの場合、`base_url` を `https://dashscope.aliyuncs.com/api/v1/tasks/86ecf553-d340-4e21-xxxxxxxxx` に置き換えてください
curl -X GET https://dashscope-intl.aliyuncs.com/api/v1/tasks/86ecf553-d340-4e21-xxxxxxxxx \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"
ヘッダー

Authorization string (必須)

認証情報。この API は、認証に Model Studio API キーを使用します。例:`Bearer sk-xxxx`。

パスパラメーター

task_id string (必須)

タスク ID。

レスポンスパラメーター

タスク成功

動画 URL は 24 時間のみ保持され、この期間を過ぎると自動的に消去されます。生成された動画は速やかに保存する必要があります。

{
    "request_id": "ec016349-6b14-9ad6-8009-xxxxxx",
    "output": {
        "task_id": "3f21a745-9f4b-4588-b643-xxxxxx",
        "task_status": "SUCCEEDED",
        "submit_time": "2025-04-18 10:36:58.394",
        "scheduled_time": "2025-04-18 10:37:13.802",
        "end_time": "2025-04-18 10:45:23.004",
        "video_url": "https://dashscope-result-wlcb.oss-cn-wulanchabu.aliyuncs.com/xxx.mp4?xxxxx",
        "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 fur is smooth, and its whiskers are clearly visible. The background is a simple light-colored wall, highlighting the cat's black silhouette. A close-up shot emphasizes the changes in the cat's expression and the details of its eyes."
    },
    "usage": {
        "video_duration": 5,
        "video_count": 1,
        "SR": 480
    }
}

タスク失敗

タスクが失敗した場合、`task_status` は `FAILED` に設定され、エラーコードとメッセージが提供されます。詳細については、「エラーメッセージ」を参照して問題を解決してください。

{
    "request_id": "e5d70b02-ebd3-98ce-9fe8-759d7d7b107d",
    "output": {
        "task_id": "86ecf553-d340-4e21-af6e-a0c6a421c010",
        "task_status": "FAILED",
        "code": "InvalidParameter",
        "message": "The size is not match xxxxxx"
    }
}

タスククエリの有効期限切れ

`task_id` は 24 時間有効です。この期間を過ぎると、クエリは失敗し、次のエラーメッセージが返されます。

{
    "request_id": "a4de7c32-7057-9f82-8581-xxxxxx",
    "output": {
        "task_id": "502a00b1-19d9-4839-a82f-xxxxxx",
        "task_status": "UNKNOWN"
    }
}

output object

タスクの出力情報。

プロパティ

task_id string

タスク ID。クエリは 24 時間有効です。

task_status string

タスクのステータス。

列挙

  • PENDING

  • RUNNING

  • SUCCEEDED

  • FAILED

  • CANCELED

  • UNKNOWN:タスクが存在しないか、ステータスが不明です。

ポーリング中のステータス遷移:

  • PENDING → RUNNING → SUCCEEDED または FAILED。

  • 最初のクエリのステータスは通常 PENDING または RUNNING です。

  • ステータスが SUCCEEDED に変わると、レスポンスには生成された動画の URL が含まれます。

  • ステータスが FAILED の場合は、エラーメッセージを確認してリトライしてください。

submit_time string

タスクが送信された時刻。時刻は UTC+8 タイムゾーンです。フォーマットは YYYY-MM-DD HH:mm:ss.SSS です。

scheduled_time string

タスクが実行を開始した時刻。時刻は UTC+8 タイムゾーンです。フォーマットは YYYY-MM-DD HH:mm:ss.SSS です。

end_time string

タスクが完了した時刻。時刻は UTC+8 タイムゾーンです。フォーマットは YYYY-MM-DD HH:mm:ss.SSS です。

video_url string

動画の URL。このパラメーターは `task_status` が `SUCCEEDED` の場合にのみ返されます。

リンクは 24 時間有効です。この URL を使用して動画をダウンロードできます。動画は MP4 形式で、H.264 エンコーディングを使用しています。

orig_prompt string

元の入力プロンプト。これは prompt リクエストパラメーターに対応します。

actual_prompt string

プロンプトの再書き込みが有効な場合、このパラメーターは使用された実際の最適化されたプロンプトを返します。この機能が無効な場合、このパラメーターは返されません。

code string

エラーコード。リクエストが失敗した場合にのみ返されます。詳細については、「エラーメッセージ」をご参照ください。

message string

詳細なエラーメッセージ。リクエストが失敗した場合にのみ返されます。詳細については、「エラーメッセージ」をご参照ください。

usage object

出力の統計情報。成功した結果のみがカウントされます。

プロパティ

video_duration integer

生成された動画の長さ (秒)。列挙値は 5 です。課金計算式は:コスト = 動画の長さ (秒) × 単価。

video_count integer

生成された動画の数。これは 1 に固定されています。

video_ratio string

この値は現在、2.1 モデルによってのみ返されます。生成された動画のアスペクト比。これは standard に固定されています。

SR integer

この値は現在、2.2 モデルによってのみ返されます。生成された動画の解像度レベル。列挙値は 480、720、1080 です。

request_id string

一意のリクエスト ID。この ID を使用して問題を追跡およびトラブルシューティングできます。

DashScope SDK

SDK のパラメーター名は、HTTP API のものとほとんど一致しています。パラメーター構造は、特定のプログラミング言語の機能に基づいてカプセル化されています。

image-to-video タスクは時間がかかり、通常 1〜5 分かかるため、SDK は HTTP 非同期呼び出しプロセスをカプセル化し、同期呼び出しと非同期呼び出しの両方をサポートします。

実際の所要時間は、キュー内のタスク数とサービスの状況によって異なります。結果が出るまでしばらくお待ちください。

Python SDK

Python SDK は、パブリック URL またはローカルファイルパス (絶対または相対) の 2 つの画像入力メソッドをサポートしています。どちらのメソッドも選択できます。詳細については、「入力画像」をご参照ください。

説明

潜在的な実行時エラーを防ぐために、最新バージョンの DashScope Python SDK をインストールすることを推奨します。詳細については、「SDK のインストールまたはアップグレード」をご参照ください。

同期呼び出し

この例では、同期呼び出しを示し、パブリック 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 キー (Alibaba Cloud 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('しばらくお待ちください...')
    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()
レスポンス例
`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 up, and its whiskers are clearly visible. The background is a simple, light-colored wall, which 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 キー (Alibaba Cloud 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('しばらくお待ちください...')
    rsp = VideoSynthesis.async_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("task_id: %s" % rsp.output.task_id)
    else:
        print('失敗しました, 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('失敗しました, status_code: %s, code: %s, message: %s' %
              (status.status_code, status.code, status.message))

    # タスクが完了するのを待ちます。fetch を定期的に呼び出し、完了ステータスにあるか確認します。
    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()
レスポンス例

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 shiny, 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 look directly at the camera, its eyes full of 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

Java SDK は、パブリック URL またはローカルファイルパス (絶対パスである必要があります) の 2 つの画像入力メソッドをサポートしています。どちらのメソッドも選択できます。詳細については、「入力画像」をご参照ください。

説明

潜在的な実行時エラーを防ぐために、最新バージョンの DashScope Java SDK をインストールすることを推奨します。詳細については、「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 キー (Alibaba Cloud 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("リアルなスタイル、小さな黒猫が好奇心旺盛に空を見上げ、カメラは目線の高さから徐々に上昇し、最終的にトップダウンビューでその好奇心に満ちた視線を捉える。")
                        .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();
    }
}
レスポンス例
`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 キー (Alibaba Cloud 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("リアルなスタイル、小さな黒猫が好奇心旺盛に空を見上げ、カメラは目線の高さから徐々に上昇し、最終的にトップダウンビューでその好奇心に満ちた視線を捉える。")
                        .firstFrameUrl(firstFrameUrl)
                        .lastFrameUrl(lastFrameUrl)
                        .parameters(parameters)
                        .build();
        VideoSynthesisResult result = null;
        try {
            System.out.println("---非同期呼び出し、しばらくお待ちください----");
            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` と動画 URL は 24 時間保持されます。有効期限が切れると、クエリやダウンロードはできなくなります。

  • 音声サポート:このサービスは無音動画のみを生成します。音声出力はサポートされていません。音声を生成するには、「音声合成」サービスを使用できます。

  • コンテンツモデレーション:Content Moderation は、すべての入力プロンプト、画像、および出力動画をレビューします。コンテンツが当社のポリシーに違反する場合、システムは「IPInfringementSuspect」または「DataInspectionFailed」エラーを返します。詳細については、「エラーメッセージ」をご参照ください。

主要なパラメーターの説明

入力画像

first_frame_url および last_frame_url パラメーターの入力画像を次の方法で提供します:

方法 1:パブリック URL

  • HTTP または HTTPS プロトコルをサポートするパブリックにアクセス可能な URL。

  • 例:https://example.com/images/cat.png

方法 2:ローカルファイルパス (SDK のみ)

  • Python SDK絶対パスと相対パスの両方をサポートします。ファイルパスのルールは次のとおりです:

    システム

    入力ファイルパス

    例 (絶対パス)

    例 (相対パス)

    Linux または macOS

    file://{ファイルの絶対パスまたは相対パス}

    file:///home/images/test.png

    file://./images/test.png

    Windows オペレーティングシステム

    file://D:/images/test.png

    file://./images/test.png

  • Java SDK絶対パスのみをサポートします。ファイルパスのルールは次のとおりです:

    システム

    入力ファイルパス

    例 (絶対パス)

    Linux または macOS

    file://{ファイルの絶対パス}

    file:///home/images/test.png

    Windows オペレーティングシステム

    file:///{ファイルの絶対パス}

    file:///D:/images/test.png

課金とレート制限

  • 無料クォータと料金については、「モデルリストと料金」をご参照ください。

  • レート制限については、「Wan シリーズ」をご参照ください。

  • 課金の詳細:

    • 課金は、正常に生成された動画の秒単位の長さに基づきます。料金は、クエリ API が task_status として SUCCEEDED を返し、動画が正常に生成された場合にのみ適用されます。

    • モデル呼び出しの失敗や処理エラーは、料金が発生したり、「無料クォータ」を消費したりすることはありません。

エラーコード

モデル呼び出しが失敗し、エラーメッセージが返された場合は、「エラーメッセージ」を参照して問題を解決してください。

よくある質問

動画に関するよくある質問:詳細については、「よくある質問」をご参照ください。

Q:特定の縦横比 (3:4 など) の動画を生成するにはどうすればよいですか?

A:出力動画の縦横比は入力された開始フレーム画像 (img_url) によって決まりますが、厳密な 3:4 などの正確な比率を保証することはできません

仕組み:モデルは入力画像の縦横比を基準とし、480P、720P、1080P などの解像度パラメーターに基づいてサポートされている解像度に適合させます。出力解像度は、幅と高さが 16 で割り切れるという技術要件を満たす必要があるため、最終的な縦横比にはわずかなずれが生じることがあります。たとえば、0.75 から 0.739 への調整などです。これは正常な動作です。

  • 例:入力画像が 750 × 1000 (縦横比 3:4 = 0.75) で、`resolution` が「720P」(目標総ピクセル数約 920,000) に設定されている場合、実際の出力は 816 × 1104 (縦横比 ≈ 0.739、総ピクセル数約 900,000) になります。

  • 解像度パラメーターは主に動画の鮮明度 (総ピクセル数) を制御することに注意してください。最終的な動画の縦横比は、依然として入力画像に基づいており、必要な微調整のみが行われます。

ベストプラクティス:目標の縦横比に厳密に一致させるには、その比率の入力画像を使用し、出力動画をトリミングまたはパディングして後処理します。たとえば、ビデオ編集ツールを使用して出力動画を目標の比率にトリミングしたり、黒帯やぼかし背景を追加してパディングしたりできます。