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

Alibaba Cloud Model Studio:Wan - 最初と最後のフレームによる動画生成 API リファレンス (2.2)

最終更新日:Apr 30, 2026

Wan 2.2 モデルは、最初のフレーム、最後のフレーム、およびテキストプロンプトからスムーズなトランジションを持つ動画を生成します。

関連ドキュメントユーザーガイド

注意事項

API 呼び出しが成功するようにするには、ご利用のモデル、エンドポイント URL、および API キーが同一リージョンに存在している必要があります。リージョンをまたいだ呼び出しは失敗します。

  • モデルの選択: モデルが利用可能なリージョンを確認してください。

  • URL の選択: ご利用のリージョンに対応するエンドポイント URL を選択してください。HTTP URL および DashScope SDK URL の両方がサポートされています。

  • API キーの設定: リージョンを選択し、API キーを取得して、環境変数として設定してください。

  • 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」をご参照ください。

リクエストパラメーター

最初と最後のフレーム

最初のフレーム、最後のフレーム、およびプロンプトに基づいて動画を生成します。

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 (必須)

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。

詳細については、Model Studio コンソールをご確認ください。

input object (必須)

プロンプトなどのタスクの主要な入力を含みます。

プロパティ

prompt string (任意)

テキストプロンプトです。中国語および英語の両方をサポートしています。最大長は 800 文字です。漢字およびアルファベットはいずれも 1 文字としてカウントされます。この制限を超えるテキストは切り捨てられます。

最初のフレームと最後のフレームの間で主題またはシーンに大きな変化がある場合は、カメラの移動(例:「camera moves to the left」)や被写体の移動(例:「a person runs forward」)など、トランジションのプロセスを記述することを推奨します。

例: 「小さな黒い猫が興味津々に空を見上げている。カメラは目線の高さから徐々に上昇し、最終的にその好奇心あふれる視線をトップダウンビューで捉える。」

効果的なプロンプトの書き方のヒントについては、「テキストから動画および画像から動画へのプロンプトガイド」をご参照ください。

negative_prompt string (任意)

動画から除外するコンテンツを記述する否定的なプロンプトで、出力を制約するのに役立ちます。

中国語および英語の両方をサポートしています。最大長は 500 文字です。この制限を超えるテキストは切り捨てられます。

例:「low resolution, error, worst quality, low quality, deformed, extra fingers, bad proportions」。

first_frame_url string (必須)

最初のフレーム画像の URL です。出力動画の縦横比は最初のフレーム画像の縦横比と一致します。

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

画像要件:

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

  • 解像度:幅および高さは 240 ~ 8,000 ピクセルの範囲内である必要があります。

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

last_frame_url string (必須)

最後のフレーム画像の URL です。

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

画像要件:

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

  • 解像度:幅および高さは 240 ~ 8,000 ピクセルの範囲内である必要があります。最後のフレームの解像度は最初のフレームと異なってもよく、解像度または縦横比を一致させる必要はありません。

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

parameters object (任意)

動画処理パラメーターです。

プロパティ

resolution string (任意)

重要

resolution パラメーターはコストに直接影響します。同じモデルの場合、コストの階層は 1080P > 720P > 480P です。呼び出し前に Model Studio コンソールで料金を確認してください。

生成された動画の解像度です。このパラメーターは縦横比を変更せずに解像度(総ピクセル数)を調整します。

このパラメーターのデフォルト値および利用可能な値は、以下のとおりモデルパラメーターに依存します。

  • wan2.2-kf2v-flash: 利用可能な値は 480P720P、および 1080P です。デフォルト値は 720P です。

  • wan2.1-kf2v-plus: 利用可能な値は 720P のみです。デフォルト値は 720P です。

例:720P

duration integer (任意)

重要

duration パラメーターはコストに直接影響します。コストは秒単位で請求されます。呼び出し前に Model Studio コンソールで料金を確認してください。

この値は 5 に固定されています。

prompt_extend bool (任意)

プロンプトリライトを有効にするかどうかを指定します。有効にすると、大規模言語モデル(LLM)が入力プロンプトをインテリジェントに書き換えます。これにより、短いプロンプトの結果が大幅に改善されますが、レイテンシが増加します。

  • true: デフォルト値。プロンプトリライトを有効にします。

  • false: プロンプトリライトを無効にします。

例:true

watermark bool (任意)

動画の右下隅に「AI-generated」というテキストのウォーターマークを追加するかどうかを指定します。

  • false: デフォルト値。ウォーターマークを追加しません。

  • true: ウォーターマークを追加します。

例:false

seed integer (任意)

乱数シードは、[0, 2147483647] の範囲内の整数である必要があります。

指定しない場合、ランダムなシードが生成されます。固定シードを使用すると、再現性が向上します。

モデル生成は確率的であるため、同じシードでも必ずしも同一の結果が得られるとは限りません。

応答パラメーター

成功時の応答

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

トレースおよびトラブルシューティング用の一意のリクエスト識別子です。

code string

エラーコードです。失敗したリクエストでのみ返されます。「エラーメッセージ」をご参照ください。

message string

詳細なエラーメッセージです。失敗したリクエストでのみ返されます。「エラーメッセージ」をご参照ください。

ステップ 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 を返します。

リクエストパラメーター

タスク結果のクエリ

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

各リージョンの API キーは異なります。詳細については、「API キーの取得」をご参照ください。
北京リージョンのモデルを使用する場合は、base_urlhttps://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 (必須)

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 + 08:00 で、形式は YYYY-MM-DD HH:mm:ss.SSS です。

scheduled_time string

タスクが実行された時刻です。時刻は UTC + 08:00 で、形式は YYYY-MM-DD HH:mm:ss.SSS です。

end_time string

タスクが完了した時刻です。時刻は UTC + 08:00 で、形式は YYYY-MM-DD HH:mm:ss.SSS です。

video_url string

生成された動画の URL です。task_status が SUCCEEDED の場合にのみ返されます。

24 時間有効です。動画は H.264 エンコーディングの MP4 形式です。

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 モデルでのみ返されます。生成された動画の解像度階層です。利用可能な値は 480720、および 1080 です。

request_id string

トレースおよびトラブルシューティング用の一意のリクエスト識別子です。

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 ドメイン名リストを取得してください。