Skip to main content

萬相-圖生視頻-基於首幀API參考(2.1-2.6)

萬相-圖生視頻模型根據 首幀映像 和 文本提示詞 ,產生一段流暢的視頻。

相關文檔使用指南
全新推出的萬相2.7-圖生視頻支援首幀生視頻、首尾幀生視頻、視頻續寫三大任務,推薦優先選用本文檔的圖生視頻-基於首幀(wan2.6及早期模型)僅支援首幀生視頻。

適用範圍

為確保調用成功,請務必保證模型、endpoint URL 和 API Key 均屬於同一地區。跨地區調用將會失敗。
本文的範例程式碼適用於新加坡地區
阿里雲百鍊為華北2(北京)、新加坡地區推出了業務空間專屬網域名稱,能夠為推理請求提供卓越的效能和更高的穩定性,建議遷移至新網域名稱:
  • 華北2(北京)地區:從 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} 為您的業務空間 ID,可在阿里雲百鍊控制台的業務空間詳情頁面查看。現有網域名稱仍可正常使用。

HTTP調用

圖生視頻任務耗時較長(通常為1-5分鐘),API採用非同步呼叫的方式。整個流程包含 “建立任務 -> 輪詢擷取” 兩個核心步驟,具體如下:

步驟1:建立任務擷取任務ID

  • 新加坡
  • 維吉尼亞
  • 北京
  • 法蘭克福
POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis
調用時請將{WorkspaceId}替換為真實的業務空間ID
  • 建立成功後,使用介面返回的 task_id 查詢結果,task_id 有效期間為 24 小時。請勿重複建立任務,輪詢擷取即可。
  • 新手指引請參見Postman

請求參數

要求標頭(Headers)
Content-Typestring(必選)請求內容類型。此參數必須設定為application/jsonAuthorizationstring(必選)請求身份認證。介面使用阿里雲百鍊API Key進行身份認證。樣本值:Bearer sk-xxxx。X-DashScope-Asyncstring(必選)非同步處理配置參數。HTTP請求只支援非同步,必須設定為enable
缺少此要求標頭將報錯:“current user api does not support synchronous calls”。
請求體(Request Body)
model string (必選)模型名稱。模型列表與價格詳見模型價格樣本值:wan2.6-i2v-flash。input object (必選)輸入的基本資料,如提示詞等。

屬性

prompt string (可選)文本提示詞。用來描述產生映像中期望包含的元素和視覺特點。支援中英文,每個漢字/字母佔一個字元,超過部分會自動截斷。長度限制因模型版本而異:
  • wan2.6和wan2.5系列模型:長度不超過1500個字元。
  • wan2.2 和wan2.1系列模型:長度不超過800個字元。
樣本值:一隻小貓在草地上奔跑。提示詞提示詳見文生視頻/圖生視頻Prompt指南negative_prompt string (可選)反向提示詞,用來描述不希望在視頻畫面中看到的內容,可以對視頻畫面進行限制。支援中英文,長度不超過500個字元,超過部分會自動截斷。樣本值:低解析度、錯誤、最差品質、低品質、殘缺、多餘的手指、比例不良等。img_url string (必選)首幀映像的URL或 Base 64 編碼資料。映像限制:
  • 映像格式:JPEG、JPG、PNG(不支援透明通道)、BMP、WEBP。
  • 映像解析度:映像的寬度和高度範圍為[240,8000],單位為像素。
  • 檔案大小:
    • wan2.6和wan2.5系列模型:不超過20MB。
    • wan2.2 和wan2.1系列模型:不超過10MB。
支援輸入的格式:
  1. 公網URL:
  2. Base 64 編碼映像後的字串:
    • 資料格式:data:{MIME_type};base64,{base64_data}
    • 樣本值:data:image/png;base64,GDU7MtCZzEbTbmRZ......。(編碼字串過長,僅展示片段)
    • 詳情請參見傳入映像
audio_url string (可選)支援模型:wan2.6和wan2.5系列模型。音頻檔案的 URL,模型將使用該音頻產生視頻。支援輸入的格式:
  1. 公網URL:
音頻限制:
  • 格式:wav、mp3。
  • 時間長度:3~30s。
  • 檔案大小:不超過15MB。
  • 超限處理:若音頻長度超過 duration 值(5秒或10秒),自動截取前5秒或10秒,其餘部分丟棄。若音頻長度不足視頻時間長度,超出音頻長度部分為無聲視頻。例如,音頻為3秒,視頻時間長度為5秒,輸出視頻前3秒有聲,後2秒無聲。
樣本值:https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/ozwpvi/rap.mp3
parameters object (可選)視頻處理參數,如設定視頻解析度、設定視頻時間長度、開啟prompt智能改寫、添加浮水印等。

屬性

resolution string (可選)
resolution直接影響費用,請在調用前確認模型價格
指定產生的視頻解析度檔位,用於調整視頻的清晰度(總像素)。模型根據選擇的解析度檔位,自動縮放至相近總像素,視頻寬高比將盡量與輸入映像 img_url 的寬高比保持一致,詳見常見問題此參數的預設值和可用枚舉值依賴於 model 參數,規則如下:
  • wan2.6-i2v-flash:可選值:720P、1080P。預設值為1080P
  • wan2.6-i2v :可選值:720P、1080P。預設值為1080P
  • wan2.6-i2v-us :可選值:720P、1080P。預設值為1080P
  • wan2.5-i2v-preview :可選值:480P、720P、1080P。預設值為1080P
  • wan2.2-i2v-flash:可選值:480P、720P。預設值為720P
  • wan2.2-i2v-plus:可選值:480P、1080P。預設值為1080P
  • wan2.1-i2v-turbo:可選值:480P、720P。預設值為720P
  • wan2.1-i2v-plus:可選值:720P。預設值為720P
樣本值:1080P。duration integer (可選)
duration直接影響費用,請在調用前確認模型價格
產生視頻的時間長度,單位為秒。該參數的取值依賴於 model參數:
  • wan2.6-i2v-flash:取值為[2, 15]之間的整數。預設值為5。
  • wan2.6-i2v:取值為[2, 15]之間的整數。預設值為5。
  • wan2.6-i2v-us:可選值為5、10、15。預設值為5。
  • wan2.5-i2v-preview:可選值為5、10。預設值為5。
  • wan2.2-i2v-plus:固定為5秒,且不支援修改。
  • wan2.2-i2v-flash:固定為5秒,且不支援修改。
  • wan2.1-i2v-plus:固定為5秒,且不支援修改。
  • wan2.1-i2v-turbo:可選值為3、4或5。預設值為5。
樣本值:5。prompt_extendboolean (可選)是否開啟prompt智能改寫。開啟後使用大模型對輸入prompt進行智能改寫。對於較短的prompt產生效果提升明顯,但會增加耗時。
  • true:預設值,開啟智能改寫。
  • false:不開啟智能改寫。
樣本值:true。shot_type string (可選)支援模型:wan2.6系列模型。指定產生視頻的鏡頭類型,即視頻是由一個連續鏡頭還是多個切換鏡頭組成。生效條件:僅當"prompt_extend": true 時生效。參數優先順序:shot_type > prompt。例如,若 shot_type設定為"single",即使 prompt 中包含“產生多鏡頭視頻”,模型仍會輸出單鏡頭視頻。可選值:
  • single:預設值,輸出單鏡頭視頻
  • multi:輸出多鏡頭視頻。
樣本值:single。
當希望嚴格控制視頻的敘事結構(如產品展示用單鏡頭、故事短片用多鏡頭),可通過此參數指定。
audio boolean (可選)
audio直接影響費用,有聲視頻與無聲視頻價格不同,請前往百鍊控制台查看價格。
支援模型:wan2.6-i2v-flash。是否產生有聲視頻。參數優先順序:audio > audio_url。當 audio=false時,即使傳入 audio_url,輸出仍為無聲視頻,且計費按無聲視頻計算。可選值:
  • true:預設值,輸出有聲視頻。
  • false:輸出無聲視頻。
樣本值:true。watermark boolean (可選)是否添加浮水印標識,浮水印位於視頻右下角,文案固定為“AI產生”。
  • false:預設值,不添加浮水印。
  • true:添加浮水印。
樣本值:false。seedinteger(可選)隨機數種子,取值範圍為[0, 2147483647]未指定時,系統自動產生隨機種子。若需提升產生結果的可複現性,建議固定seed值。請注意,由於模型產生具有機率性,即使使用相同 seed,也不能保證每次產生結果完全一致。樣本值:12345。
  • 多鏡頭敘事
  • 自動配音
  • 傳入音頻檔案
  • 產生無聲視頻
  • 使用反向提示詞
僅wan2.6系列模型支援此功能。可通過設定"prompt_extend": true"shot_type":"multi"啟用。
# 以下為新加坡地區的URL,調用時請將 {WorkspaceId} 替換為真實的業務空間ID,各地區的URL不同。

curl --location 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
    -H 'X-DashScope-Async: enable' \
    -H "Authorization: Bearer $DASHSCOPE_API_KEY" \
    -H 'Content-Type: application/json' \
    -d '{
    "model": "wan2.6-i2v-flash",
    "input": {
        "prompt": "一幅都市奇幻藝術的情境。一個充滿動感的塗鴉藝術角色。一個由噴漆所畫成的少年,正從一面混凝土牆上活過來。他一邊用極快的語速演唱一首英文rap,一邊擺著一個經典的、充滿活力的饒舌歌手姿勢。情境設定在夜晚一個充滿都市感的鐵路橋下。燈光來自一盞孤零零的街燈,營造齣電影般的氛圍,充滿高能量和驚人的細節。視頻的音頻部分完全由他的rap構成,沒有其他對話或雜音。",
        "img_url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/wpimhv/rap.png",
        "audio_url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/ozwpvi/rap.mp3"
    },
    "parameters": {
        "resolution": "720P",
        "prompt_extend": true,
        "duration": 10,
        "shot_type":"multi"
    }
}'

響應參數

output object任務輸出資訊。

屬性

task_id string任務ID。查詢有效期間24小時。task_status string任務狀態。

枚舉值

  • PENDING:任務排隊中
  • RUNNING:任務處理中
  • SUCCEEDED:任務執行成功
  • FAILED:任務執行失敗
  • CANCELED:任務已取消
  • UNKNOWN:任務不存在或狀態未知
request_idstring請求唯一標識。可用於請求明細溯源和問題排查。codestring請求失敗的錯誤碼。請求成功時不會返回此參數,詳情請參見錯誤碼messagestring請求失敗的詳細資料。請求成功時不會返回此參數,詳情請參見錯誤碼
  • 成功響應
  • 異常響應
請儲存 task_id,用於查詢任務狀態與結果。
{
    "output": {
        "task_status": "PENDING",
        "task_id": "0385dc79-5ff8-4d82-bcb6-xxxxxx"
    },
    "request_id": "4909100c-7b5a-9f92-bfe5-xxxxxx"
}

步驟2:根據任務ID查詢結果

  • 新加坡
  • 維吉尼亞
  • 北京
  • 法蘭克福
GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id}
調用時請將{WorkspaceId}替換為真實的業務空間ID
  • 輪詢建議:視頻產生過程約需數分鐘,建議採用輪詢機制,並設定合理的查詢間隔(如 15 秒)來擷取結果。
  • 任務狀態流轉:PENDING(排隊中)→ RUNNING(處理中)→ SUCCEEDED(成功)/ FAILED(失敗)。
  • 結果連結:任務成功後返回視頻連結,有效期間為 24 小時。建議在擷取連結後立即下載並轉存至永久儲存(如阿里雲 OSS)。
  • task_id 有效期間24小時,逾時後將無法查詢結果,介面將返回任務狀態為UNKNOWN

請求參數

要求標頭(Headers)
Authorizationstring(必選)請求身份認證。介面使用阿里雲百鍊API Key進行身份認證。樣本值:Bearer sk-xxxx。
URL路徑參數(Path parameters)
task_id string(必選)任務ID。
  • 查詢任務結果
{task_id}完整替換為上一步介面返回的task_id的值。task_id查詢有效期間為24小時,並請將{WorkspaceId}替換為真實的業務空間ID
curl -X GET https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/tasks/{task_id} \
--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,請檢查錯誤資訊並重試。
  • 若狀態為 CANCELED,表示任務已取消,如需繼續請重新提交任務。
  • 若狀態為 UNKNOWN,表示任務不存在或狀態未知,可能在 task_id 不存在或超過 24 小時有效期間後出現。
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_urlstring視頻URL。僅在 task_status 為 SUCCEEDED 時返回。連結有效期間24小時,可通過此URL下載視頻。視頻格式為MP4(H.264 編碼)。orig_prompt string原始輸入的prompt,對應請求參數promptactual_prompt stringprompt_extend=true 時,系統會對輸入 prompt 進行智能改寫,此欄位返回實際用於產生的最佳化後 prompt。
  • prompt_extend=false,該欄位不會返回。
  • 注意:wan2.6 模型無論 prompt_extend 取值如何,均不返回此欄位。
codestring請求失敗的錯誤碼。請求成功時不會返回此參數,詳情請參見錯誤碼messagestring請求失敗的詳細資料。請求成功時不會返回此參數,詳情請參見錯誤碼
usage object輸出資訊統計,只對成功的結果計數。

屬性

wan2.6系列模型返回參數

input_video_duration integer輸入的視頻的時間長度,單位秒。當前不支援傳入的視訊,因此固定為0。output_video_duration integer僅在使用 wan2.6 模型時返回。輸出視頻的時間長度,單位秒。其值等同於input.duration的值。duration integer總的視頻時間長度,用於計費。計費公式:duration=input_video_duration+output_video_durationSR integer僅在使用 wan2.6 模型時返回。產生視頻的解析度檔位。樣本值:720。video_count integer產生視頻的數量。固定為1。audioboolean僅在使用wan2.6-i2v-flash模型時返回。表示輸出視頻是否為有聲視頻。
duration integer產生視頻的時間長度,單位為秒。枚舉值為5、10。計費公式:費用 = 視頻秒數 × 單價。SR integer產生視頻的解析度。枚舉值為480、720、1080。video_count integer產生視頻的數量。固定為1。
video_duration integer產生視頻的時間長度,單位為秒。枚舉值為3、4、5。計費公式:費用 = 視頻秒數 × 單價。video_ratio string產生視頻的比例。固定為standard。video_count integer產生視頻的數量。固定為1。
request_idstring請求唯一標識。可用於請求明細溯源和問題排查。
  • 任務執行成功
  • 任務執行失敗
  • 任務查詢到期
視頻URL僅保留24小時,逾時後會被自動清除,請及時儲存產生的視頻。
{
    "request_id": "2ca1c497-f9e0-449d-9a3f-xxxxxx",
    "output": {
        "task_id": "af6efbc0-4bef-4194-8246-xxxxxx",
        "task_status": "SUCCEEDED",
        "submit_time": "2025-09-25 11:07:28.590",
        "scheduled_time": "2025-09-25 11:07:35.349",
        "end_time": "2025-09-25 11:17:11.650",
        "orig_prompt": "一幅都市奇幻藝術的情境。一個充滿動感的塗鴉藝術角色。一個由噴漆所畫成的少年,正從一面混凝土牆上活過來。他一邊用極快的語速演唱一首英文rap,一邊擺著一個經典的、充滿活力的饒舌歌手姿勢。情境設定在夜晚一個充滿都市感的鐵路橋下。燈光來自一盞孤零零的街燈,營造齣電影般的氛圍,充滿高能量和驚人的細節。視頻的音頻部分完全由他的rap構成,沒有其他對話或雜音。",
        "video_url": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.mp4?Expires=xxx"
    },
    "usage": {
        "duration": 10,
        "input_video_duration": 0,
        "output_video_duration": 10,
        "video_count": 1,
        "SR": 720
    }
}

DashScope SDK調用

SDK 的參數命名與HTTP介面基本一致,參數結構根據語言特性進行封裝。 由於圖生視頻任務耗時較長(通常為1-5分鐘),SDK 在底層封裝了 HTTP 非同步呼叫流程,支援同步、非同步兩種調用方式。
具體耗時受限於排隊任務數和服務執行情況,請在擷取結果時耐心等待。

Python SDK調用

請確保 DashScope Python SDK 版本不低於1.25.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

範例程式碼

  • 同步調用
  • 非同步呼叫
同步調用會阻塞等待,直到視頻產生完成並返回結果。本樣本展示三種映像輸入方式:公網URL、Base64編碼、本地檔案路徑。
請求樣本
import base64
import os
from http import HTTPStatus
from dashscope import VideoSynthesis
import mimetypes
import dashscope

# 以下為新加坡地區的URL,調用時請將 {WorkspaceId} 替換為真實的業務空間ID,各地區的URL不同。
# 擷取URL:https://www.alibabacloud.com/help/en/model-studio/image-to-video-api-reference
dashscope.base_http_api_url = 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1'

# 若沒有配置環境變數,請用百鍊API Key將下行替換為:api_key="sk-xxx"
# 擷取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
api_key = os.getenv("DASHSCOPE_API_KEY")

# --- 輔助函數:用於 Base 64 編碼 ---
# 格式為 data:{MIME_type};base64,{base64_data}
def encode_file(file_path):
    mime_type, _ = mimetypes.guess_type(file_path)
    if not mime_type or not mime_type.startswith("image/"):
        raise ValueError("不支援或無法識別的映像格式")
    with open(file_path, "rb") as image_file:
        encoded_string = base64.b64encode(image_file.read()).decode('utf-8')
    return f"data:{mime_type};base64,{encoded_string}"

"""
映像輸入方式說明:
以下提供了三種圖片輸入方式,

1. 使用公網URL - 適合已有公開可訪問的圖片
2. 使用本地檔案 - 適合本地開發測試
3. 使用Base64編碼 - 適合私人圖片或需要加密傳輸的情境
"""

# 【方式一】使用公網可訪問的圖片URL
# 樣本:使用一個公開的圖片URL
img_url = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/wpimhv/rap.png"

# 【方式二】使用本地檔案(支援絕對路徑和相對路徑)
# 格式要求:file:// + 檔案路徑
# 樣本(絕對路徑):
# img_url = "file://" + "/path/to/your/img.png"    # Linux/macOS
# img_url = "file://" + "/C:/path/to/your/img.png"  # Windows
# 樣本(相對路徑):
# img_url = "file://" + "./img.png"                # 相對當前執行檔案的路徑

# 【方式三】使用Base64編碼的圖片
# img_url = encode_file("./img.png")

# 設定音頻audio url
audio_url = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/ozwpvi/rap.mp3"

def sample_call_i2v():
    # 同步調用,直接返回結果
    print('please wait...')
    rsp = VideoSynthesis.call(api_key=api_key,
                              model='wan2.6-i2v-flash',
                              prompt='一幅都市奇幻藝術的情境。一個充滿動感的塗鴉藝術角色。一個由噴漆所畫成的少年,正從一面混凝土牆上活過來。他一邊用極快的語速演唱一首英文rap,一邊擺著一個經典的、充滿活力的饒舌歌手姿勢。情境設定在夜晚一個充滿都市感的鐵路橋下。燈光來自一盞孤零零的街燈,營造齣電影般的氛圍,充滿高能量和驚人的細節。視頻的音頻部分完全由他的rap構成,沒有其他對話或雜音。',
                              img_url=img_url,
                              audio_url=audio_url,
                              resolution="720P",
                              duration=10,
                              prompt_extend=True,
                              watermark=False,
                              negative_prompt="",
                              seed=12345)
    print(rsp)
    if rsp.status_code == HTTPStatus.OK:
        print("video_url:", 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_call_i2v()
響應樣本
video_url 有效期間24小時,請及時下載視頻。
{
    "status_code": 200,
    "request_id": "2794c7a3-fe8c-4dd4-a1b7-xxxxxx",
    "code": null,
    "message": "",
    "output": {
        "task_id": "c15d5b14-07c4-4af5-b862-xxxxxx",
        "task_status": "SUCCEEDED",
        "video_url": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxx.mp4?Expires=xxx",
        "submit_time": "2026-01-22 23:24:46.527",
        "scheduled_time": "2026-01-22 23:24:46.565",
        "end_time": "2026-01-22 23:25:59.978",
        "orig_prompt": "一幅都市奇幻藝術的情境。一個充滿動感的塗鴉藝術角色。一個由噴漆所畫成的少年,正從一面混凝土牆上活過來。他一邊用極快的語速演唱一首英文rap,一邊擺著一個經典的、充滿活力的饒舌歌手姿勢。情境設定在夜晚一個充滿都市感的鐵路橋下。燈光來自一盞孤零零的街燈,營造齣電影般的氛圍,充滿高能量和驚人的細節。視頻的音頻部分完全由他的rap構成,沒有其他對話或雜音。"
    },
    "usage": {
        "video_count": 1,
        "video_duration": 0,
        "video_ratio": "",
        "duration": 10,
        "input_video_duration": 0,
        "output_video_duration": 10,
        "audio": true,
        "SR": 720
    }
}

Java SDK調用

請確保 DashScope Java SDK 版本不低於2.22.6,再運行以下代碼。若版本過低,可能會觸發 “url error, please check url!” 等錯誤。請參考安裝SDK進行更新。
根據模型所在地區設定 baseHttpApiUrl
  • 新加坡
  • 維吉尼亞
  • 北京
  • 法蘭克福
Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
調用時請將{WorkspaceId}替換為真實的業務空間ID

範例程式碼

  • 同步調用
  • 非同步呼叫
同步調用會阻塞等待,直到視頻產生完成並返回結果。本樣本展示三種映像輸入方式:公網URL、Base64編碼、本地檔案路徑。
請求樣本
// Copyright (c) Alibaba, Inc. and its affiliates.

import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesis;
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesisParam;
import com.alibaba.dashscope.aigc.videosynthesis.VideoSynthesisResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.JsonUtils;
import com.alibaba.dashscope.utils.Constants;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Base64;
import java.util.HashMap;
import java.util.Map;

public class Image2Video {

    static {
        // 以下為新加坡地區的URL,調用時請將 {WorkspaceId} 替換為真實的業務空間ID,各地區的URL不同。
        // 擷取URL:https://www.alibabacloud.com/help/en/model-studio/image-to-video-api-reference
        Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";
    }

    // 若沒有配置環境變數,請用百鍊API Key將下行替換為:apiKey="sk-xxx"
    // 擷取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
    static String apiKey = System.getenv("DASHSCOPE_API_KEY");

    /**
     * 映像輸入方式說明:三選一即可
     *
     * 1. 使用公網URL - 適合已有公開可訪問的圖片
     * 2. 使用本地檔案 - 適合本地開發測試
     * 3. 使用Base64編碼 - 適合私人圖片或需要加密傳輸的情境
     */

    //【方式一】公網URL
    static String imgUrl = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/wpimhv/rap.png";

    //【方式二】本地檔案路徑(file://+絕對路徑)
    // static String imgUrl = "file://" + "/your/path/to/img.png";    // Linux/macOS
    // static String imgUrl = "file://" + "/C:/your/path/to/img.png";  // Windows

    //【方式三】Base64編碼
    // static String imgUrl = Image2Video.encodeFile("/your/path/to/img.png");

    // 設定音頻audio url
    static String audioUrl = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250925/ozwpvi/rap.mp3";

    public static void image2video() throws ApiException, NoApiKeyException, InputRequiredException {
        // 設定parameters參數
        Map<String, Object> parameters = new HashMap<>();
        parameters.put("prompt_extend", true);
        parameters.put("watermark", false);
        parameters.put("seed", 12345);

        VideoSynthesis vs = new VideoSynthesis();
        VideoSynthesisParam param =
                VideoSynthesisParam.builder()
                        .apiKey(apiKey)
                        .model("wan2.6-i2v-flash")
                        .prompt("一幅都市奇幻藝術的情境。一個充滿動感的塗鴉藝術角色。一個由噴漆所畫成的少年,正從一面混凝土牆上活過來。他一邊用極快的語速演唱一首英文rap,一邊擺著一個經典的、充滿活力的饒舌歌手姿勢。情境設定在夜晚一個充滿都市感的鐵路橋下。燈光來自一盞孤零零的街燈,營造齣電影般的氛圍,充滿高能量和驚人的細節。視頻的音頻部分完全由他的rap構成,沒有其他對話或雜音。")
                        .imgUrl(imgUrl)
                        .audioUrl(audioUrl)
                        .duration(10)
                        .parameters(parameters)
                        .resolution("720P")
                        .negativePrompt("")
                        .build();
        System.out.println("please wait...");
        VideoSynthesisResult result = vs.call(param);
        System.out.println(JsonUtils.toJson(result));
    }

     /**
     * 將檔案編碼為Base64字串
     * @param filePath 檔案路徑
     * @return Base64字串,格式為 data:{MIME_type};base64,{base64_data}
     */
    public static String encodeFile(String filePath) {
        Path path = Paths.get(filePath);
        if (!Files.exists(path)) {
            throw new IllegalArgumentException("檔案不存在: " + filePath);
        }
        // 檢測MIME類型
        String mimeType = null;
        try {
            mimeType = Files.probeContentType(path);
        } catch (IOException e) {
            throw new IllegalArgumentException("無法檢測檔案類型: " + filePath);
        }
        if (mimeType == null || !mimeType.startsWith("image/")) {
            throw new IllegalArgumentException("不支援或無法識別的映像格式");
        }
        // 讀取檔案內容並編碼
        byte[] fileBytes = null;
        try{
            fileBytes = Files.readAllBytes(path);
        } catch (IOException e) {
            throw new IllegalArgumentException("無法讀取檔案內容: " + filePath);
        }

        String encodedString = Base64.getEncoder().encodeToString(fileBytes);
        return "data:" + mimeType + ";base64," + encodedString;
    }

    public static void main(String[] args) {
        try {
            image2video();
        } catch (ApiException | NoApiKeyException | InputRequiredException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}
響應樣本
video_url 有效期間24小時,請及時下載視頻。
{
    "request_id": "87c091bb-7a3c-4904-8501-xxxxxx",
    "output": {
        "task_id": "413ed6e4-5f3a-4f57-8d58-xxxxxx",
        "task_status": "SUCCEEDED",
        "video_url": "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/xxx.mp4?Expires=xxx",
        "orig_prompt": "一幅都市奇幻藝術的情境。一個充滿動感的塗鴉藝術角色。一個由噴漆所畫成的少年,正從一面混凝土牆上活過來。他一邊用極快的語速演唱一首英文rap,一邊擺著一個經典的、充滿活力的饒舌歌手姿勢。情境設定在夜晚一個充滿都市感的鐵路橋下。燈光來自一盞孤零零的街燈,營造齣電影般的氛圍,充滿高能量和驚人的細節。視頻的音頻部分完全由他的rap構成,沒有其他對話或雜音。",
        "submit_time": "2026-01-22 23:25:45.729",
        "scheduled_time": "2026-01-22 23:25:45.771",
        "end_time": "2026-01-22 23:26:44.942"
    },
    "usage": {
        "video_count": 1,
        "duration": 10.0,
        "input_video_duration": 0.0,
        "output_video_duration": 10.0,
        "SR": "720"
    },
    "status_code": 200,
    "code": "",
    "message": ""
}

使用限制

  • 資料時效:任務task_id和 視頻url均只保留 24 小時,到期後將無法查詢或下載。
  • 內容審核:輸入的內容(如prompt、映像)、輸出視頻均會經過Alibaba Content Security Service審核,含違規內容將返回 “IPInfringementSuspect”或“DataInspectionFailed”錯誤,詳見參見錯誤碼

已知限制

使用 wan2.6-i2v-flash 產生圓形物體連續旋轉(如圓環、齒輪、錶盤)的動畫時,畫面在約 3 秒後可能出現短暫卡頓(畫面靜止約 1 秒)。如需產生此類連續旋轉效果,建議改用萬相2.7-圖生視頻模型以規避此問題。

錯誤碼

如果模型調用失敗並返回報錯資訊,請參見錯誤碼進行解決。

常見問題

Q:如何產生特定寬高比(如3:4)的視頻?

A: 輸出視頻的寬高比由輸入首幀映像(img_url)決定,但無法保證精確比例(如嚴格3:4),會存在一定偏差。
  • 為什麼會有偏差? 模型會以輸入映像的比例為基準,結合設定的解析度檔位(resolution)總像素,自動計算出最接近的合法解析度。由於要求視頻的長和寬必須是 16 的倍數,模型會對最終解析度做微調,因此無法保證輸出比例嚴格等於 3:4,但會非常接近。
    • 例如:輸入映像750×1000(寬高比 3:4 = 0.75),並設定 resolution = "720P"(目標總像素約 92 萬),實際輸出816×1104(寬高比 ≈ 0.739,總像素約90萬)。
  • 實踐建議
    • 輸入控制:盡量使用與目標比例一致的圖片作為首幀輸入。
    • 後期處理:如果您對比例有嚴格要求,建議在視頻產生後,使用編輯工具進行簡單的裁剪或黑邊填充。

Q:如何擷取視頻儲存的訪問網域名稱白名單?

A: 模型產生的視頻儲存於阿里雲OSS,API將返回一個臨時的公網URL。若需要對該下載地址進行防火牆白名單配置,請注意:由於底層儲存會根據業務情況進行動態變更,為避免到期資訊影響訪問,文檔不提供固定的OSS網域名稱白名單。如有安全管控需求,請聯絡客戶經理擷取最新OSS網域名稱列表。
文本產生
映像產生
音頻
Realtime API
  • 概述
向量與排序
模型生產