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

Alibaba Cloud Model Studio:Wan - 開始フレームと終了フレームからの動画生成 API リファレンス (2.2)

最終更新日:Sep 02, 2026

Wan 2.2 モデルは、 開始フレーム 、 終了フレーム、およびテキストプロンプト から、スムーズに遷移する動画を生成します。

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

注意事項

API 呼び出しを成功させるには、モデル、エンドポイント URL、API キーが同じリージョンにある必要があります。リージョンをまたいだ呼び出しは失敗します。

  • モデルの選択:モデルが利用可能なリージョンを確認します。
  • URL の選択:ご利用のリージョンに対応するエンドポイント URL を選択します。HTTP URL と DashScope SDK URL の両方がサポートされています。
  • API キーの設定:リージョンを選択し、API キーを取得してから、環境変数として設定します。
  • SDK のインストール:SDK を使用して API 呼び出しを行うには、DashScope SDK をインストールします。

注記このトピックのコード例は、シンガポールに適用されます。

重要Alibaba Cloud Model Studio は、中国 (北京) およびシンガポールリージョン向けにワークスペース固有のドメインをリリースしました。新しい専用ドメインは、推論リクエストに対して優れたパフォーマンスと高い安定性を提供します。新しいドメインへの移行を推奨します:

  • 中国 (北京):https://dashscope.aliyuncs.com から https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com
  • シンガポール:https://dashscope-intl.aliyuncs.com から https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com

{WorkspaceId} は、Alibaba Cloud Model Studio コンソールの [ワークスペース詳細] ページで確認できるワークスペース ID です。既存のドメインは引き続き完全に機能します。

HTTP 呼び出し

画像から動画へのタスクは、通常 1〜5 分かかる長時間実行される操作であるため、API は非同期呼び出しを使用します。このプロセスには、タスクの作成、次に結果のポーリングという 2 つのコアステップが含まれます。

ステップ 1:タスクの作成

シンガポール

POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/image2video/video-synthesis

{WorkspaceId} を実際のワークスペース ID に置き換えてください。

中国 (北京)

POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/image2video/video-synthesis

{WorkspaceId} を実際のワークスペース ID に置き換えてください。

注記

  • タスクが作成された後、返された task_id を使用して結果をクエリします。task_id は 24 時間有効です。重複したタスクを作成しないでください。代わりに、ポーリングを使用して結果を取得してください。
  • 初心者向けのガイダンスについては、「Postman または cURL を使用した API の呼び出し」をご参照ください。

リクエストパラメーター

リクエストヘッダー

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 文字としてカウントされます。この制限を超えるテキストは切り捨てられます。

開始フレームと終了フレームの間で主題やシーンに大きな変化がある場合は、カメラの動き (例:「カメラが左に移動する」) や主題の動き (例:「人が前方に走る」) などの遷移プロセスを記述することを推奨します。

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

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

negative_prompt string (任意)

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

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

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

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_extendbool (任意)

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

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

例:true

watermark bool (任意)

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

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

例:false

seed integer (任意)

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

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

モデルの生成は確率的であるため、同じシードでも同一の結果が保証されるわけではありません。

開始フレームと終了フレーム

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

# 以下の URL はシンガポールリージョン用です。呼び出し時に、{WorkspaceId} を実際のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.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": "480P",
        "prompt_extend": true
    }
}'

否定的なプロンプト

negative_prompt パラメーターを使用して、生成される動画から人物などの特定の要素を除外します。

# 以下の URL はシンガポールリージョン用です。呼び出し時に、{WorkspaceId} を実際のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.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": "リアルなスタイル、小さな黒猫が好奇心旺盛に空を見上げ、カメラが目線の高さから徐々に上昇し、最終的にトップダウンの視点からその好奇心に満ちた視線を捉える。",
        "negative_prompt": "people"
    },
    "parameters": {
        "resolution": "720P",
        "prompt_extend": true
    }
}'

レスポンスパラメーター

output object

タスクの出力情報です。

プロパティ

task_id string

タスク ID です。クエリに対して 24 時間有効です。

task_status string

タスクのステータスです。

列挙値

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

request_id string

トレースとトラブルシューティングのためのユニークなリクエスト識別子です。

code string

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

message string

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

成功レスポンス

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"
}

ステップ 2:結果のクエリ

シンガポール

GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id}

{WorkspaceId} を実際のワークスペース ID に置き換えてください。

中国 (北京)

GET https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/tasks/{task_id}

{WorkspaceId} を実際のワークスペース ID に置き換えてください。

注記

  • ポーリングの推奨事項:動画の生成には数分かかります。15 秒などの適切な間隔でポーリングメカニズムを使用してください。
  • タスク状態の遷移:PENDING → RUNNING → SUCCEEDED または FAILED。
  • 結果のリンク:タスクが成功すると、24 時間有効な動画 URL が返されます。動画をダウンロードし、OSS などの永続ストレージに保存してください。
  • task_idの有効期間24 時間。この期間を過ぎると、クエリはタスクステータスを UNKNOWN として返します。

リクエストパラメーター

リクエストヘッダー

Authorization string (必須)

Model Studio API キーでリクエストを認証します。例:Bearer sk-xxxx。

パスパラメーター

task_id string (必須)

タスクの ID です。

タスク結果のクエリ

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

API キーはリージョンごとに異なります。詳細については、「API キーの取得」をご参照ください。

中国 (北京) リージョンのモデルを使用する場合、base_urlhttps://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/tasks/86ecf553-d340-4e21-xxxxxxxxx に置き換えてください。ここで {WorkspaceId} は実際のワークスペース ID です。

curl -X GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/86ecf553-d340-4e21-xxxxxxxxx \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"

レスポンスパラメーター

outputobject

タスクの出力情報です。

プロパティ

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

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

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

トレースとトラブルシューティングのためのユニークなリクエスト識別子です。

タスク成功

動画 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": "リアルなスタイル、小さな黒猫が好奇心旺盛に空を見上げ、カメラが目線の高さから徐々に上昇し、最終的にトップダウンの視点からその好奇心に満ちた視線を捉える。",
        "actual_prompt": "リアルなスタイル、小さな黒猫が好奇心旺盛に空を見上げ、カメラが目線の高さから徐々に上昇し、最終的にトップダウンの視点からその好奇心に満ちた視線を捉える。猫の黄色い目は明るく表情豊かで、毛は滑らかで、ひげははっきりと見えます。背景はシンプルな明るい色の壁で、猫の黒いシルエットを際立たせています。クローズアップショットは、猫の表情の変化と目の詳細を強調しています。"
    },
    "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"
    }
}

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://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

{WorkspaceId} を実際のワークスペース ID に置き換えてください。

北京

dashscope.base_http_api_url = 'https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1'

{WorkspaceId} を実際のワークスペース ID に置き換えてください。

サンプルコード

同期呼び出し

この例では、パブリック 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://{WorkspaceId}.ap-southeast-1.maas.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('しばらくお待ちください...')
    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": "リアルなスタイル、小さな黒猫が好奇心旺盛に空を見上げ、カメラが目線の高さから徐々に上昇し、最終的にトップダウンの視点からその好奇心に満ちた視線を捉える。",
        "actual_prompt": "リアルなスタイル、小さな黒猫が好奇心旺盛に空を見上げ、カメラが目線の高さから徐々に上昇し、最終的にトップダウンの視点からその好奇心に満ちた視線を捉える。猫の黄色い目は明るく表情豊かで、耳を立て、ひげははっきりと見えます。背景はシンプルで明るい色の壁で、猫の黒い毛と集中した表情を際立たせています。クローズアップショットは、猫の視線と姿勢の変化を強調しています。"
    },
    "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://{WorkspaceId}.ap-southeast-1.maas.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('しばらくお待ちください...')
    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
}
  1. 完了したタスクのレスポンス例

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": "リアルなスタイル、小さな黒猫が好奇心旺盛に空を見上げ、カメラが目線の高さから徐々に上昇し、最終的にトップダウンの視点からその好奇心に満ちた視線を捉える。",
        "actual_prompt": "リアルなスタイル、小さな黒猫が好奇心旺盛に空を見上げ、カメラが目線の高さから徐々に上昇し、最終的にトップダウンの視点からその好奇心に満ちた視線を捉える。猫の毛は漆黒で光沢があり、目は大きくて明るく、金色の瞳孔を持っています。耳を立てて見上げ、非常に集中しているように見えます。カメラが上に移動した後、猫はカメラの方を向き、その目は好奇心と警戒心で満たされています。背景はシンプルで、猫の詳細な特徴を際立たせています。柔らかく自然な光でのクローズアップショット。"
    },
    "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://{WorkspaceId}.ap-southeast-1.maas.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("リアルなスタイル、小さな黒猫が好奇心旺盛に空を見上げ、カメラが目線の高さから徐々に上昇し、最終的にトップダウンの視点からその好奇心に満ちた視線を捉える。")
                        .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://{WorkspaceId}.ap-southeast-1.maas.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("リアルなスタイル、小さな黒猫が好奇心旺盛に空を見上げ、カメラが目線の高さから徐々に上昇し、最終的にトップダウンの視点からその好奇心に満ちた視線を捉える。")
                        .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"
    }
}
  1. 完了したタスクのレスポンス例

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