Skip to main content

簡短回答

Seedance 只看請求裡每個素材的 role,不看你工具裡勾了什麼開關,也不看提示詞。 圖片沒寫 role 時,一張圖會按「首幀圖生影片」處理;這時再帶上參考影片,就成了「首幀 + 參考素材」,原廠直接拒絕。 典型報錯如下,提交任務時直接返回 400,不會建立任務,也不計費:
改法:用 Seedance 原生端點 POST /seedance/api/v3/contents/generations/tasks 提交,給圖片寫 "role": "reference_image"、影片寫 "role": "reference_video";影片用公網可直接下載的 URL,或先入庫再用 asset:// 素材 ID 引用。

一個真實案例

一位客戶在自己搭的本地創作工具裡,傳了一張角色圖和一段影片,勾選了「全能參考」,沒勾「首尾幀」,提示詞裡還專門寫了「圖一不是首幀、不開首尾幀模式」,結果每次都報上面的錯。 我們在閘道側抓到了這次請求的原文(圖片 Base64 已截斷):
這個請求有兩處問題,任何一處都會導致失敗: 這位客戶的瀏覽器控制台裡,同一個 mp4 還有 415 Unsupported Media Type 報錯,來自工具自己的本地預覽介面(localhost 上的 /api/media-preview/...)。這說明工具沒能把這段影片處理成可用的地址,最後把本地路徑原樣塞進了請求。

不要用通用影片端點提交 Seedance

/v2/videos/generations(以及 /v1/videos/v1/video/generations)是閘道的通用影片端點,欄位是幾家影片模型的最大公約數,表達不了 Seedance 的輸入模式
  • 沒有 role:分不清首幀、首尾幀和多模態參考,一圖一影片這種組合一定會被當成「首幀 + 參考」
  • 解析度透傳不完整:實測 2.5 請求 480p 會按 720p 出片、2.0 系請求 1080p 會按 720p 出片,而計費按實際出片結算
  • 2.5 獨有的引數omni_reference_task_typeoutput_format 等)沒有對應欄位
所以 Seedance 任務一律走原生端點 如果你用的是第三方工具,找一找它的 Seedance 通道能不能選「原生 / 火山方舟」格式;只提供通用影片介面的工具,做不了帶參考影片的任務。

正確寫法:每個素材都寫 role

要點:
  • 三種輸入模式互斥:首尾幀(2 張圖,first_frame / last_frame)、首幀(1 張圖)、多模態參考(reference_image / reference_video / reference_audio)。只要帶了參考影片或參考音訊,所有圖片都必須寫 reference_image
  • 不寫 role 就是首幀:單張圖不寫 role,等同於 first_frame
  • 提示詞裡用 @影像1@影片1 按傳入順序指代素材
  • 參考素材數量:2.0 系最多 9 圖 + 3 影片 + 3 音訊,2.5 最多 30 圖 + 10 影片 + 10 音訊

參考影片怎麼傳

原廠是在自己的伺服器上下載素材的,所以影片必須是原廠能直接訪問到的地址。 提交前可以在任意一臺能上網的機器上自查(把 <URL> 換成你的影片連結):
應返回 code=200typevideo/mp4video/quicktimesize 與原檔案一致。返回 HTML、JSON 或 4xx 都說明這個連結給不了原廠。圖片連結的完整自查方法見 圖片連結能開啟卻報格式錯誤

相關文件

影片生成介面

原生端點、各輸入模式的 content 組合與 role 取值

素材優先實踐

參考影片為什麼別用 Base64,以及入庫拿素材 ID 的步驟