キャラクター置換 – 解析

namifusion/character-swap/analyze

namifusion/character-swap/analyze. 画像・動画・顔交換のモデル API を閲覧。試してから統一 REST API で統合。

パラメータ

名前型既定制約説明
resolution解像度select720p480p | 720p出力解像度またはプロバイダーの生成モードを選択します。高い設定ほど処理時間が長くなる場合があります。

出力フィールド

フィールド型説明
objectsarray
video_infoobject
analysis_idstring
detected_objectsnumber
track_manifest_urlstring

API

統一 REST API でこのモデルを呼び出せます。API Keys ページでキーを取得してください。

cURL
# 1) Submit — returns { "task_uuid": "..." }
curl -X POST "https://www.namifusion.com/api/v1/marketplace/run/namifusion/character-swap/analyze" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "input": {
    "resolution": "720p"
  }
}'

# 2) Poll until status is "completed", then read the output URLs
curl "https://www.namifusion.com/api/v1/marketplace/run/tasks/TASK_UUID" \
  -H "Authorization: Bearer YOUR_API_KEY"
Python
import time, requests

API_KEY = "YOUR_API_KEY"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}

# 1) Submit
resp = requests.post(
    "https://www.namifusion.com/api/v1/marketplace/run/namifusion/character-swap/analyze",
    headers=HEADERS,
    json={
        "input": {
            "resolution": "720p"
        }
    },
)
resp.raise_for_status()  # 401/402/429/5xx stop here instead of polling a bad task
task = resp.json()

# 2) Poll until a terminal state (completed / failed / cancelled).
#    This model is allowed up to 1800s server-side.
deadline = time.time() + 1860
while task.get("status") not in ("completed", "failed", "cancelled"):
    if time.time() > deadline:
        raise TimeoutError(f"still {task.get('status')} — keep the task_uuid and poll later")
    time.sleep(3)
    poll = requests.get(f"https://www.namifusion.com/api/v1/marketplace/run/tasks/{task['task_uuid']}", headers=HEADERS)
    poll.raise_for_status()
    task = poll.json()

print(task["status"], task.get("output"))
JavaScript
const API_KEY = "YOUR_API_KEY";
const HEADERS = { Authorization: `Bearer ${API_KEY}` };

// 1) Submit
const resp = await fetch("https://www.namifusion.com/api/v1/marketplace/run/namifusion/character-swap/analyze", {
  method: "POST",
  headers: { ...HEADERS, "Content-Type": "application/json" },
  body: JSON.stringify({
    "input": {
      "resolution": "720p"
    }
  }),
});
if (!resp.ok) throw new Error(`submit failed: ${resp.status} ${await resp.text()}`);
let task = await resp.json();

// 2) Poll until a terminal state (completed / failed / cancelled).
//    This model is allowed up to 1800s server-side.
const deadline = Date.now() + 1860 * 1000;
while (!["completed", "failed", "cancelled"].includes(task.status)) {
  if (Date.now() > deadline) throw new Error(`still ${task.status} — keep the task_uuid and poll later`);
  await new Promise((r) => setTimeout(r, 3000));
  const poll = await fetch(`https://www.namifusion.com/api/v1/marketplace/run/tasks/${task.task_uuid}`, { headers: HEADERS });
  if (!poll.ok) throw new Error(`poll failed: ${poll.status}`);
  task = await poll.json();
}

console.log(task.status, task.output);

ドキュメント

Character Swap - Analyze

キャラクター置換ワークフローの第 1 段階として、動画内の人物を検出し、追跡情報を作成します。

Character Swap Analyze は、入力動画に登場する人物をフレーム間で検出・追跡し、次の Generate ステップで使用する obj_id と track_manifest_url を返します。この段階では動画そのものを置き換えません。生成時に同じ動画と同じ解像度を使用できるよう、分析結果と入力条件をまとめて保持してください。

主な特長

  • 人物の検出と追跡:動画内の人物を識別し、時間方向に対応するオブジェクト情報を作成します。
  • プレビュー付きオブジェクト一覧:objects から各人物の obj_id、プレビュー、マスク、カバレッジを確認できます。
  • 生成用マニフェスト:track_manifest_url を返し、Character Swap Generate へそのまま引き渡せます。
  • 動画メタデータ:幅、高さ、FPS、フレーム数などの video_info を取得できます。
  • 480p / 720p 分析:生成ステップと一致する解像度を選択できます。

技術仕様

項目内容
ワークフローCharacter Swap のステップ 1
必須入力video_url
動画の上限30 秒
解像度480p、720p(デフォルト)
主な出力objects、track_manifest_url、video_info
次のモデルnamifusion/character-swap/generate

基本フロー

  1. namifusion/character-swap/analyze に動画 URL と解像度を送信します。
  2. タスクが完了するまで結果エンドポイントをポーリングします。
  3. objects のプレビューを確認し、置換する人物の obj_id を選びます。
  4. 同じ video_url、返された track_manifest_url、選択した obj_id を Generate ステップへ渡します。

価格

既存文書の価格は 1 回の分析につき 10 クレジットです。この日本語文書の追加では価格設定を変更しません。

活用のポイント

30 秒以内で人物が十分に見える動画を使用してください。強いモーションブラー、長時間の完全な遮蔽、極端に小さい人物は追跡品質を下げる場合があります。Generate では Analyze と同じ動画、解像度、マニフェストの組み合わせを使い、別の分析結果を混在させないでください。