Kling V3.0 モーションコントロールAPI クイックスタート

Kling V3.0 モーションコントロールAPI クイックスタート

Kling V3.0 モーションコントロールを使用すると、参照動画からモーションを抽出し、それをフレームごとに適用することで、静止したキャラクター画像をアニメーション化できます。出力は、画像のキャラクターの外観を保持しながら、動画の動きを再現します。これはモーショントランスファーと呼ばれる技術です。このガイドでは、Novita AI のエンドポイント、必要な入力、主要パラメータ、そして実際の API キーで実行可能な Python と curl のサンプルを紹介します。

モーションコントロールが適しているケース

モーションコントロールは、アニメーション化したい静止キャラクター画像と、再現したいモーションの参照動画の2つがある場合に適したツールです。プロンプトからモーションを生成する Image-to-Video(I2V)とは異なります。モーションコントロールでは、モーションは参照動画から正確にコピーされます。出力されるキャラクターは、参照動画内の人物と同じ動作軌跡に従います。

以下のような場合に使用します:

  • 特定のダンス、歩行サイクル、またはジェスチャーをキャラクターのイラストや写真に適用したい場合
  • 異なるキャラクター間で一貫性のある再現可能なモーションが必要な場合(同じ参照動画、異なる画像)
  • モーションの品質が重要で、I2V プロンプトによる自由な結果が予測不能すぎる場合

モーション自体がまだ未定義の場合は使用しないでください。その場合は、説明的なプロンプトを使用した I2V の方が、低コストで柔軟性が高くなります。

ステップ1:Novita API キーを取得する

novita.ai にサインアップし、ダッシュボードから API キーを生成します。新規アカウントには無料クレジットが付与され、本番運用前にモーションコントロールをテストできます。

ステップ2:エンドポイントとモデル ID を確認する

Novita AI 上の Kling V3.0 モーションコントロールは、標準の非同期ビデオパターンを使用します:

タスクを送信:

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:入力を準備する

モーションコントロールには、参照画像と参照動画の2つの入力が必要です。これらを適切に準備することが、出力品質の最大の要因です。

参照画像

出力が外観を保持するキャラクターです。要件:

  • 形式: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 モーションコントロールは非同期です。タスクを送信した後、ステータスが 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秒クリップが生成されることに注意してください。

スタンダード vs. プロ:適切な品質ティアの選択

Kling V3.0 モーションコントロールは、2つの品質ティアで利用可能です:

スタンダード は720pで出力します。反復、モーション互換性のテスト、または最終バージョンにコミットする前の下書き生成に適しています。

プロ は1080pで出力し、モーションの忠実度と被写体の一貫性が向上します。プロを使用するケース:

  • 出力が最終的なプロダクション(ソーシャル投稿、短編映画、製品デモ)に使用される場合
  • キャラクターの顔や衣服の細部が重要な場合
  • 時間の経過とともに品質低下がより顕著になる長いクリップ(10秒以上)を生成する場合

ほとんどの開発ワークフローでは、スタンダードで入力互換性とモーション品質を確認し、最終パスでプロに切り替えることをお勧めします。

料金、時間、コスト見積もり

Novita AI はモーションコントロールを生成された動画1秒あたりで課金します。スタンダードとプロのティアには、それぞれ秒単位の料金があります。現在の料金については、Novita AI モデルページ を確認してください。

時間制限:

  • character_orientation: "video" — 最大30秒
  • character_orientation: "image" — 5秒に固定

コストは "video" モードの時間に応じてスケールします。 "image" モードは常に5秒のクリップを生成します。

一般的なエラーのトラブルシューティング

タスクが直ちに422または検証エラーで失敗する imagevideo の両方が公開アクセス可能なURLであることを確認してください(認証の背後や、期限切れの短命な署名付きURLではないこと)。Novita バックエンドはタスク実行時に両方のファイルを取得できる必要があります。

出力モーションがおかしい、またはキャラクターが歪む 最も一般的な原因は、画像と参照動画のキャラクターの向きの不一致です。 character_orientation"video""image" で切り替えて、どちらがより良いアライメントを生成するか試してみてください。

クリップの途中でキャラクターの顔のアイデンティティが失われる 参照画像のキャラクターが、明確で遮蔽のない顔と体を持っていることを確認してください。長いクリップの場合、プロティアはスタンダードよりも被写体の一貫性を維持します。

参照動画のモーションがきれいに転送されない ノイズが多い、または混雑した参照映像は、モーション抽出の品質を低下させます。パフォーマーがメインの被写体であり、背景が比較的クリーンな映像を使用してください。スムーズなモーション転送を目指す場合は、手持ちの不安定な映像は避けてください。

ステータスが3分以上 processing のまま 時折、キューの遅延が発生します。スタックとして扱う前に、最大5分間待機してください。それでもスタックしている場合は、新しいタスクを送信してください。古い task_id を再利用しないでください。

開発者が Kling モーションコントロールで構築するもの

ゲームアセットのキャラクターアニメーション:キャラクターイラストを取得し、リギングやアニメーションソフトウェアを使わずに参照モーションクリップ(歩く、走る、攻撃)を適用します。

一貫したモーションのソーシャルコンテンツ:同じダンス参照動画を複数のキャラクター画像に適用し、同一の振り付けで異なる外見の一連のクリップを生成します。

プリビジュアライゼーション:フルプロダクションアニメーションに投資する前に、特定の動作シーケンスがキャラクターデザインでどのように見えるかをテストします。

Eコマース製品表示:衣服の動きを示す慎重に選択された参照動画を使用して、製品画像に微妙なポーズ変更や衣服の動きを適用します。

FAQ

モーションコントロールと Novita AI の Image-to-Video の違いは何ですか?

Image-to-Video(I2V)はテキストプロンプトに基づいて画像をアニメーション化します。モーションはモデルが説明から生成します。モーションコントロールは、参照動画から特定のモーションを画像内のキャラクターに転送します。モーションコントロールは正確で再現可能なモーションを提供し、I2V は参照クリップなしで創造的な柔軟性を提供します。

参照動画のキャラクターは画像のキャラクターの外観と一致する必要がありますか?

いいえ。参照動画はモーション抽出のみに使用されます。出力されるキャラクターは動画ではなく画像から来ます。これが中核機能です:モーションは一方のソースから、外観は別のソースから。最良の転送品質を得るには、プロポーションがおおよそ一致している必要があります(全身動画には全身画像、上半身動画にはポートレート)。

公開されている動画を参照として使用できますか?

形式とサイズ要件を満たす動画であれば、どの動画でも使用できます。モーションは、被写体が明確に見え、遮蔽が最小限の映像から最もよく転送されます。複数人物の複雑なシーンや、編集(カット、ズーム)が多用された映像は、精度を低下させる可能性があります。

生成にはどのくらい時間がかかりますか?

出力時間と選択したモード(スタンダードまたはプロ)にもよりますが、通常30~120秒です。タイトなループではなく、8~10秒ごとにポーリングしてください。

おすすめ記事