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 或驗證錯誤
請檢查 image 和 video 是否都是可公開存取的 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 秒輪詢一次,而不是在緊密迴圈中輪詢。
