先說答案:可靈 3.0 能在一支影片裡產生多個鏡頭,介面上透過請求中結構化的 shots 物件來控制。在 HopBase 上,kling-v3 和 kling-v3-omni 支援多鏡頭分鏡,成片長度 3-15 秒,解析度可選 720p / 1080p / 2K / 4K。分鏡有兩種模式:"mode": "intelligence" 是智慧分鏡,由模型自行切鏡頭;"mode": "customize" 是自訂分鏡,最多寫 6 段,每段有自己的提示詞(上限 512 字元),每段至少 1 秒,各段長度加總必須剛好等於請求中的 duration。若要讓同一個角色出現在每個鏡頭裡,先用 POST /v1/kling/subjects 建立自訂主體(目前免費),再把主體 ID 放進 subjects,在提示詞中用 <<<element_1>>> 指稱它。分鏡和主體都不影響每秒單價,影響價格的只有解析度、是否有聲和是否帶參考影片。
哪些可靈模型支援分鏡和主體
| 模型 | 長度 | 分鏡(多鏡頭) | 主體 | 參考圖 |
|---|---|---|---|---|
kling-v3-omni | 3-15 秒 | 支援 | 支援 | 參考圖 + 主體合計 ≤ 7(帶參考影片時 ≤ 4) |
kling-v3 | 3-15 秒 | 支援 | 支援,但至少要帶 1 張參考圖 | 最多 6 張 |
kling-v3-turbo | 3-15 秒 | 不支援 | 支援 | 不支援 |
可靈的舊版本(o1、2.6、2.5 Turbo、2.1、1.6)兩項都不支援,對它們傳 shots 會回傳 model ... does not support shots (multi-shot storyboard)。正式呼叫前,先用 GET /v1/models 確認你的金鑰能用哪些模型 ID。
shots 物件的規則
所有請求都送到 POST https://api.hop-base.com/v1/video/generate。多鏡頭只要多加一個 shots 欄位,規則如下:
mode為intelligence或customize。- 智慧分鏡模式不要傳
segments,在哪裡切鏡頭由模型決定。 - 自訂分鏡模式必須傳
segments:最多 6 段,index從 1 開始連續編號,不能跳號。 - 每段的
prompt不可為空,最長 512 字元。 - 每段的
duration至少 1 秒,各段加總必須剛好等於最外層的duration。寫分段時務必明確設定duration。 - 請使用結構化的
shots。直接傳可靈原生的extra.multi_shot、extra.shot_type、extra.multi_prompt會被拒絕。
智慧分鏡:交給模型來切
curl https://api.hop-base.com/v1/video/generate \
-H "Authorization: Bearer sk-你的金鑰" \
-H "Content-Type: application/json" \
-d '{
"model": "kling-v3",
"prompt": "咖啡師磨豆、拉花,再把咖啡推到吧台對面,客人露出微笑",
"duration": 10,
"resolution": "1080p",
"audio": true,
"shots": { "mode": "intelligence" }
}'
自訂分鏡:自己寫分鏡腳本
curl https://api.hop-base.com/v1/video/generate \
-H "Authorization: Bearer sk-你的金鑰" \
-H "Content-Type: application/json" \
-d '{
"model": "kling-v3-omni",
"prompt": "一雙越野跑鞋的 10 秒產品短片",
"duration": 10,
"resolution": "1080p",
"audio": true,
"shots": {
"mode": "customize",
"segments": [
{ "index": 1, "prompt": "遠景:清晨薄霧中的步道起點,跑者正在綁鞋帶", "duration": 3 },
{ "index": 2, "prompt": "低角度跟拍:跑鞋踩過濕滑的岩石,水花以慢動作濺起", "duration": 3 },
{ "index": 3, "prompt": "特寫:跑者停在山脊上,陽光照在鞋身 logo 上", "duration": 4 }
]
}
}'
3 + 3 + 4 = 10,跟 duration 一致。如果加總對不上,請求會在建立任務之前被拒絕,錯誤為 sum of shot durations (9 s) must equal the total duration (10 s),不會收費。
用自訂主體讓角色在各鏡頭保持一致
鏡頭一切換,最難的是讓角色在每個鏡頭裡看起來還是同一個人。可靈的做法是主體(subject):用參考素材建立一次,之後依 ID 重複使用。
步驟一:建立主體(免費,非同步)
curl https://api.hop-base.com/v1/kling/subjects \
-H "Authorization: Bearer sk-你的金鑰" \
-H "Content-Type: application/json" \
-d '{
"name": "露娜吉祥物",
"description": "穿藍色帽T的橘色狐狸吉祥物",
"reference_type": "image_refer",
"frontal_image_url": "https://cdn.example.com/luna-front.png",
"reference_image_urls": [
"https://cdn.example.com/luna-side.png",
"https://cdn.example.com/luna-back.png"
]
}'
image_refer需要 1 張正面圖,再加 1-3 張參考圖。參考圖不能和正面圖重複,彼此之間也不能重複。video_refer改用一段video_url建立主體,可選擇綁定一個voice_id。兩種方式的欄位不能混用。name最長 20 字元,description最長 100 字元。所有 URL 都必須是公開的http(s)位址。
介面回傳 202 和一個 id(object 為 kling.subject.task),跟影片任務一樣用 GET /v1/video/tasks/{task_id} 輪詢。完成後,結果中的 element_ids 就是主體 ID。GET /v1/kling/subjects 可以列出你建立過的所有主體。建立主體目前免費。
步驟二:在多鏡頭請求中使用主體
curl https://api.hop-base.com/v1/video/generate \
-H "Authorization: Bearer sk-你的金鑰" \
-H "Content-Type: application/json" \
-d '{
"model": "kling-v3-omni",
"prompt": "中景:<<<element_1>>> 坐在沙發上,抱著一個紅色禮盒;接著特寫:<<<element_1>>> 掀開盒蓋,眼睛瞬間亮了起來",
"duration": 8,
"resolution": "1080p",
"subjects": [{ "id": "subject-92951593344", "name": "luna" }],
"shots": { "mode": "intelligence" }
}'
主體的引用規則:
- 依順序對應:
subjects[0]是<<<element_1>>>,subjects[1]是<<<element_2>>>,依此類推。 - 傳入的每個主體都必須在最外層
prompt中被引用,否則會回傳subjects[0] is not referenced in prompt as <<<element_1>>>。 - 反過來也一樣:引用了沒有傳入的主體(例如只傳兩個,卻寫了
<<<element_3>>>),同樣會被拒絕。 kling-v3使用主體時,還必須至少帶 1 個"usage": "reference"的images[]。少了這一項,請求在送出時就會被拒絕,不會送到可靈。- 範例用的是智慧分鏡:這時最外層
prompt就是所有鏡頭的腳本,主體引用正好寫在模型讀取的位置。主體也能和自訂分鏡一起用。我們用kling-v3-omni實測:最外層prompt寫一次 <<<element_1>>>,各段提示詞只寫「那個男人」,兩個鏡頭裡都是同一個主體,長相、眼鏡、白袍和紅領帶都對得上。引用必須寫在最外層prompt,只寫在segments裡會在送出時回報subjects[0] is not referenced in prompt as <<<element_1>>>。另外,在一次對照中,每段都再寫一次 <<<element_1>>> 時,第一個鏡頭裡同時出現了兩個這個角色(一個在走路,一個已經坐在長椅上);各段用代稱時沒有出現這種情況。建議在最外層引用一次、各段用代稱描述,並先用 720p 短片試一支再放量。
輪詢與結果
以上都是非同步任務。送出後回傳 202,附任務 ID(形如 kt57x…)和 billing_bucket。之後輪詢 GET /v1/video/tasks/{task_id},直到 status 變成 completed 或 failed:
curl https://api.hop-base.com/v1/video/tasks/kt57xYOUR_TASK_ID \
-H "Authorization: Bearer sk-你的金鑰"
任務完成後,outputs 是 api.hop-base.com 上的簽章連結,從完成起 24 小時內有效;usage 中有 billed_seconds 和 cost_usd(實際扣款金額)。任務失敗時會回傳穩定的 error.code,例如 input_sensitive、invalid_request、generation_failed、timeout,失敗一律不收費。任務超過 2 小時未完成會自動判定失敗。完整欄位說明見 可靈影片串接文件。
多鏡頭怎麼計費
可靈依成片秒數計費,單價由模型、解析度,以及「無聲 / 有聲 / 帶參考影片」決定。分鏡、主體和參考圖都不另外加價。以下是模型卡上的部分官方牌價:
| 模型 · 級距 | 720p | 1080p | 2K |
|---|---|---|---|
kling-v3 · 無聲 | $0.0882/秒 | $0.1176/秒 | $0.1471/秒 |
kling-v3 · 有聲 | $0.1324/秒 | $0.1765/秒 | $0.2206/秒 |
kling-v3-omni · 無聲、無參考影片 | $0.0882/秒 | $0.1176/秒 | $0.1471/秒 |
kling-v3-omni · 有聲、無參考影片 | $0.1176/秒 | $0.1471/秒 | $0.1765/秒 |
依此計算,上面那支 10 秒的自訂分鏡範例(kling-v3-omni、1080p、有聲)以牌價是 10 × $0.1471,約 $1.47。4K 級距和帶參考影片的級距見模型卡 kling-v3、kling-v3-omni。價格頁上是同樣級距的人民幣牌價,例如 kling-v3 1080p 有聲為 ¥1.20/秒。你的實際費率取決於所屬群組。
寫好分鏡的幾個建議
- 每段照分鏡表的寫法來寫。先寫景別(遠景、特寫、低角度跟拍),再寫動作,一段只寫一個動作。
- 短鏡頭至少給 2 秒。下限雖然是 1 秒,但太短的鏡頭裡人物動不了多少。
- 先用智慧分鏡加 720p 打樣。故事順了,再改成自訂分鏡和高解析度。成本等於秒數乘以解析度級距的單價。
- 需要聲音時再開
audio。以 kling-v3 1080p 為例,開聲音後單價從 $0.1176/秒升到 $0.1765/秒。
常見問題
可靈 3.0 一支影片最多幾個鏡頭?
自訂分鏡最多 6 段,總長度在 3-15 秒之間。智慧分鏡由模型自行決定切幾個鏡頭。
kling-v3-turbo 支援多鏡頭嗎?
不支援。kling-v3-turbo 支援主體,但不支援 shots。做分鏡請用 kling-v3 或 kling-v3-omni。
分鏡和主體要另外收費嗎?
不用。每秒單價只由模型、解析度、是否有聲和是否帶參考影片決定。建立自訂主體目前免費。
主體和自訂分鏡能一起用嗎?
可以。把主體放進 subjects,在最外層 prompt 裡用 <<<element_1>>> 引用一次,各段 segments 裡用「他」「那個男人」這類代稱描述動作,角色會在每個鏡頭中保持一致。kling-v3 使用主體時還要附 1 張 "usage": "reference" 的參考圖。
為什麼出現「sum of shot durations must equal the total duration」?
各段長度加總必須剛好等於最外層的 duration。寫分段時請明確設定 duration,不要依賴預設值。
可以直接傳可靈原生的 multi_shot 或 element_list 嗎?
不行。HopBase 只接受結構化的 shots 和 subjects。傳入 extra.multi_shot、extra.multi_prompt、extra.shot_type、extra.element_list 會被拒絕,錯誤訊息會告訴你改用哪個結構化欄位。
怎麼開始?
在 HopBase 主控台建立金鑰,選擇包含可靈模型的群組,用 GET /v1/models 確認清單裡有 kling-v3 或 kling-v3-omni,然後先跑上面的智慧分鏡範例。如果你要的是另一種控制方式,讓人物照著影片動作動起來,請參考《可靈動作控制 API 串接指南》。