Kling V3.0 Motion Control API 快速入門

Kling V3.0 Motion Control API 快速入門

Kling V3.0 Motion Control 能讓你從參考影片中提取動作,並逐幀套用到靜態角色圖片上,使其動起來。輸出結果會保留你圖片中角色的外觀,同時重現影片中的動作——這項技術稱為動作轉移。本指南將介紹 Novita AI 端點、所需的輸入內容、關鍵參數,以及可用真實 API 金鑰執行的 Python 與 curl 範例。

何時該使用 Motion Control

當你同時具備兩項素材時,Motion Control 就是正確的工具:一張你想賦予動畫的靜態角色圖片,以及一部你想重現其動作的參考影片。它與 Image-to-Video (I2V) 不同,I2V 是根據提示詞生成動作。使用 Motion Control,動作會精確地從參考影片中複製——輸出角色將遵循參考影片中人物的相同動作軌跡。

請在以下情況使用它:

  • 你想要將特定的舞蹈、行走循環或手勢套用到角色插圖或照片上
  • 你需要跨不同角色獲得一致且可重複的動作(相同的參考影片,不同的圖片)
  • 你在建構的內容中,動作品質至關重要,而開放式 I2V 提示詞的結果又過於不可預測

當動作本身尚未確定時,請不要使用它——在這種情況下,使用帶有描述性提示詞的 I2V 能以較低成本提供更大的靈活性。

步驟 1:取得你的 Novita API 金鑰

novita.ai 註冊,並從控制台產生一組 API 金鑰。新帳戶可獲得免費額度,讓你在投入正式環境之前先用來測試 Motion Control。

步驟 2:確認端點與模型 ID

Novita AI 上的 Kling V3.0 Motion Control 使用標準的非同步影片模式:

提交任務:

POST https://api.novita.ai/v3/async/kling-v3.0-motion-control

輪詢結果:

GET https://api.novita.ai/v3/async/task-result?task_id={task_id}

所有請求都需要:

Authorization: Bearer YOUR_NOVITA_API_KEY
Content-Type: application/json

完整文件:novita.ai/docs/api-reference/model-apis-kling-v3.0-motion-control

步驟 3:準備你的輸入內容

Motion Control 需要兩種輸入:一張參考圖片和一部參考影片。正確準備這些是影響輸出品質的單一最大因素。

參考圖片

這是輸出結果將保留其外觀的角色。要求如下:

  • 格式:JPEG、PNG、JPG
  • 最大大小:10 MB
  • 最小解析度:每邊 340px
  • 長寬比:介於 2:5 與 5:2 之間
  • 角色應清晰可見,佔據圖片面積的 5% 以上,且無嚴重遮擋(請勿裁切頭部或身體)

為獲得最佳效果,請使用角色身體比例與參考影片中可見比例大致相符的圖片。如果參考影片顯示的是全身舞者,請使用全身角色圖片,而非人像裁切。

參考影片

這是動作來源。輸出中的角色將複製此影片中的動作:

  • 格式:MP4、MOV
  • 最大大小:10 MB
  • 長度:3–30 秒
  • 最小解析度:每邊 340px
  • 長寬比:介於 2:5 與 5:2 之間
  • 參考影片中的人物應全身或上半身清晰可見且無遮蔽,包括頭部

清晰、光線充足且背景雜訊較少的影片素材,其動作轉移效果會比嘈雜或擁擠的鏡頭更為準確。

步驟 4:發送你的第一個請求

最簡 curl 請求:

curl --request POST \
  --url https://api.novita.ai/v3/async/kling-v3.0-motion-control \
  --header 'Authorization: Bearer $NOVITA_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "image": "https://example.com/character.jpg",
    "video": "https://example.com/reference_motion.mp4",
    "prompt": "A person performing a smooth dance routine, cinematic lighting",
    "model_name": "kling-v3.0-motion-control",
    "character_orientation": "video"
  }'

回應會立即回傳一個 task_id

{
  "task_id": "abc123xyz"
}

步驟 5:輪詢結果

Kling V3.0 Motion Control 是非同步的。提交任務後,持續輪詢直到狀態變為 succeed

curl --request GET \
  --url 'https://api.novita.ai/v3/async/task-result?task_id=abc123xyz' \
  --header 'Authorization: Bearer $NOVITA_API_KEY'

完成後,回應會包含一個帶有輸出 URL 的 videos 陣列:

{
  "task": {
    "status": "succeed"
  },
  "videos": [
    {
      "video_url": "https://cdn.novita.ai/output/abc123xyz.mp4",
      "video_url_ttl": "3600"
    }
  ]
}

典型的生成時間為 30–120 秒,取決於影片長度與模式。建議每 5–10 秒輪詢一次,避免對端點造成過度負擔。

完整 Python 整合範例

此腳本會提交一個動作控制任務,並輪詢直到完成:

import os
import time
import requests

API_KEY = os.environ["NOVITA_API_KEY"]
BASE_URL = "https://api.novita.ai"

HEADERS = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json",
}

def submit_motion_control(image: str, video: str, prompt: str = "") -> str:
    payload = {
        "image": image,
        "video": video,
        "prompt": prompt,
        "model_name": "kling-v3.0-motion-control",
        "character_orientation": "video",
    }
    resp = requests.post(f"{BASE_URL}/v3/async/kling-v3.0-motion-control", json=payload, headers=HEADERS)
    resp.raise_for_status()
    return resp.json()["task_id"]


def poll_result(task_id: str, timeout: int = 300) -> str:
    deadline = time.time() + timeout
    while time.time() < deadline:
        resp = requests.get(
            f"{BASE_URL}/v3/async/task-result",
            params={"task_id": task_id},
            headers=HEADERS,
        )
        resp.raise_for_status()
        data = resp.json()
        status = data.get("task", {}).get("status")
        if status == "succeed":
            return data["videos"][0]["video_url"]
        if status == "failed":
            raise RuntimeError(f"Task failed: {data}")
        time.sleep(8)
    raise TimeoutError(f"Task {task_id} did not complete within {timeout}s")


if __name__ == "__main__":
    image = "https://example.com/character.jpg"
    video = "https://example.com/reference_motion.mp4"

    print("Submitting task...")
    task_id = submit_motion_control(image, video, prompt="smooth dance routine, warm lighting")
    print(f"Task ID: {task_id}")

    print("Polling for result...")
    output_url = poll_result(task_id)
    print(f"Output video: {output_url}")

API 參數參考

參數 類型 必填 說明
image string 要賦予動畫的角色圖片 URL。請參閱上面的輸入要求。
video string 將轉移動作的參考影片 URL。
model_name string 設定為 kling-v3.0-motion-control
prompt string 所需動作風格或場景背景的文字描述。非必填,但可改善輸出品質。
character_orientation string 控制姿態對齊與輸出長度。"video" 會比對參考影片的方向——更適合全身複雜動作,支援最長 30 秒。"image" 會比對角色圖片的方向——更適合相機相對運動,固定為 5 秒。

character_orientation 實務應用

如果你的參考影片顯示的是正面舞者,且你的角色圖片也是正面朝向,那麼 “video” 模式能提供更好的動作轉移效果,並支援最長 30 秒。如果參考影片的鏡頭會圍繞主體移動,而你的圖片是固定角度的肖像,那麼 “image” 模式傾向於減少不必要的透視變形——但請注意,它只會生成固定 5 秒的片段。

Standard 與 Pro:選擇哪個品質等級

Kling V3.0 Motion Control 提供兩種品質等級:

Standard 輸出為 720p。它適合用於迭代、測試動作相容性,或在確定最終版本前產生草稿。

Pro 輸出為 1080p,並具有更佳的動作保真度與主體一致性。請在以下情況使用 Pro:

  • 輸出將用於最終成品(社群貼文、短片、產品展示)
  • 角色臉部或服裝的細節很重要
  • 你正在生成較長的片段(10 秒以上),此時隨時間推移的品質下降會更明顯

對於大多數開發工作流程,建議先從 Standard 開始,以確認輸入相容性與動作品質,然後在最終處理時切換到 Pro。

定價、長度與成本估算

Novita AI 根據生成的影片秒數計算 Motion Control 費用。Standard 和 Pro 等級具有不同的每秒費率。有關當前定價,請查看 Novita AI 模型頁面

長度限制:

  • character_orientation: "video" — 最長 30 秒
  • character_orientation: "image" — 固定為 5 秒

成本會隨著 “video” 模式的長度而增加。“image” 模式始終生成 5 秒的片段。

常見錯誤疑難排解

任務立即失敗,出現 422 或驗證錯誤 請檢查 imagevideo 是否都是可公開存取的 URL(未受身份驗證保護,也不是已過期的短期有效預簽名 URL)。Novita 後端必須能在任務執行時取得這兩個檔案。

輸出動作看起來有問題,或角色變形 最常見的原因是圖片中的角色方向與參考影片不符。嘗試在 "video""image" 之間切換 character_orientation,看看哪一種能產生更好的對齊效果。

角色在中段失去面部識別度 確保參考圖片中的角色具有清晰、無遮蔽的臉部與身體。對於較長的片段,Pro 等級比 Standard 更能維持主體一致性。

參考影片的動作無法乾淨地轉移 嘈雜或擁擠的參考素材會降低動作提取的效果。請使用表演者為主要主體且背景相對乾淨的影片。如果目標是流暢的動作轉移,請避免手持晃動的影片。

狀態卡在 processing 超過 3 分鐘 偶爾的佇列延遲是正常的。在將其視為卡住之前,請等待最多 5 分鐘。如果仍然卡住,請提交一個新的任務——不要重複使用舊的 task_id

開發者使用 Kling Motion Control 建構的內容

遊戲資產的角色動畫:將角色插圖套用參考動作片段(走路、跑步、攻擊),無需骨架綁定或動畫軟體。

具有一致動作的社群內容:將相同的舞蹈參考影片套用到多個角色圖片上,產生一系列編排相同但外觀不同的片段。

預先視覺化:在投入完整動畫製作之前,測試特定動作序列在角色設計上看起來的效果。

電子商務產品展示:使用精心挑選的參考影片,將微妙的姿勢變化或服裝動作套用到產品圖片上。

常見問題

Novita AI 上的 Motion Control 和 Image-to-Video 有什麼差別?

Image-to-Video (I2V) 是根據文字提示詞為圖片製作動畫——動作是由模型根據你的描述生成的。Motion Control 則是將參考影片中的特定動作轉移到你的圖片角色上。Motion Control 提供精確、可重複的動作;I2V 則提供創作靈活性,無需參考片段。

參考影片中的角色需要與圖片角色的外觀相符嗎?

不需要。參考影片僅用於動作提取——輸出角色來自圖片,而非影片。這就是核心功能:動作來自一個來源,外觀來自另一個來源。為獲得最佳轉移品質,兩者的身體比例應大致相符(全身圖片搭配全身影片,肖像搭配上半身影片)。

我可以使用任何公開影片作為參考嗎?

你可以使用任何符合格式與大小要求的影片。動作轉移效果最佳的情況是,影片中主體清晰可見且遮擋極少。複雜的多人物場景或經過大量編輯的素材(切換鏡頭、縮放)可能會降低準確度。

生成需要多久時間?

通常為 30–120 秒,取決於輸出長度以及你選擇的是 Standard 還是 Pro 模式。建議每 8–10 秒輪詢一次,而不是在緊密迴圈中輪詢。

推薦文章