MiniMax H3の使い方|API・無料枠・ComfyUIと動画制作のコツ

MiniMax H3の使い方|API・無料枠・ComfyUIと動画制作のコツ ソフトウエア

メディアを購読する

H3はMiniMaxが開発した、文章や画像から映像と音声を一緒に作るAIモデルです。作りたい場面や動きを文章で伝えたり、手持ちの画像を動かしたりして、短い動画を作れます。

ブラウザで無料で試す方法のほか、API(プログラムから生成を依頼する仕組み)や、動画生成ソフトのComfyUIを使って自分のGPUで動かす方法もあります。使い始めるための準備と料金を比べながら、画像や3DソフトのBlenderで構図を決めて動画を作る手順を紹介します。

  1. MiniMax H3とは?映像と音声を一緒に作るモデル
  2. H3とH3 Maxは何が違うのか
    1. 解像度と入力条件の比較
    2. ローカルで動かせる公開データの内容
  3. 無料で試す方法とAPI料金
    1. 生成時間と解像度による料金の違い
    2. 入力する素材の費用
  4. 4社のAPIで送信からMP4保存まで
    1. 生成の送信と状態確認の仕組み
    2. MiniMax公式APIの実行手順
    3. fal APIの実行手順
    4. Replicate APIの実行手順
    5. Atlas Cloud APIの実行手順
  5. 画像とBlenderでショットを設計する
    1. 画像入力の役割とプロンプトの書き方
    2. Blenderを用いた開始画像の準備
    3. fal APIによる映像生成の実行例
    4. 出力結果の確認と次の修正
    5. カメラの動きまで決めるなら、下書き動画を渡す
  6. ComfyUIでローカル実行する手順
    1. ネイティブ実行とAPIノードの違い
    2. 必要なハードウェアの動作条件
    3. モデルファイルの取得と配置場所
    4. 入力条件の制限と生成の確認
    5. 利用者が試している長尺生成
  7. 商用利用と公開前に確認する条件
    1. 日本での商用利用と売上条件
    2. 月額5,000ドルはComfyの有料ライセンスの価格
    3. 海外への公開・納品には地域制限が残る
    4. 公開動画にはAI生成であることを示す
    5. APIを使う場合は提供元の条件に従う
  8. よくある質問
    1. Q1. 生成を指示した直後に通信が切れた場合はどうすればよいですか
    2. Q2. 取得した映像のURLを開いてもエラーになるのはなぜですか
    3. Q3. 用意したPNG画像をAPIへ渡しても読み込めない時の確認点は何ですか

MiniMax H3とは?映像と音声を一緒に作るモデル

MiniMaxのH3は、文章や画像、動画、音声をもとに、映像とステレオ音声を生成するAIモデルです。人物の見た目は画像、動きは動画、声は音声というように、複数の素材を組み合わせて作りたい場面を指定できます。

MiniMaxの公開例では、参照動画のカメラ移動を使い、画像の人物を歌わせ、歌声を別の音声素材に合わせる指示を紹介しています。文章ですべてを説明する代わりに、見た目や動きの手本をそれぞれ渡せる点が、制作で試したい特徴です。

MiniMaxのH3公式モデルカードにある入力、映像、音声の仕様欄
MiniMax公式モデルカードの仕様欄(2026年9月4日撮影)。最大2Kは高解像度化工程を含むH3全体の仕様です。

ブラウザで試すなら、Hailuo AIでH3を利用できます。

falでは、H3に追加学習を施したH3 Maxも試せます。H3とH3 Maxでは、入力できる素材や出力できる解像度が異なります。

falのMiniMax H3 Max紹介ページと動画の指示入力欄
falのH3 Max紹介ページ(2026年9月4日撮影)。画面内の順位・生成速度は掲載元の説明であり、本記事の実測値ではありません。

H3とH3 Maxは何が違うのか

H3とH3 MaxのクラウドAPI、公開モデルH3-Baseの違い
図のH3 Max欄はMiniMax公式APIの入力を示しています。falでは画像・動画・音声の参照入力にも対応します。

MiniMaxのモデルは、テキストや画像をもとにして映像と音声を同時に生成します。現在利用できる主なモデルには「MiniMax-H3」と「MiniMax-H3-Max」の2種類があります。作りたい動画の解像度や入力の条件に合わせて、どちらのモデルを使うかを選ぶ必要があります。

標準モデルであるMiniMax-H3に対し、MiniMax-H3-Maxは指示に従う精度や美観を狙ってfalが追加学習をおこなったモデルです。このMaxモデルはfalだけでなく、MiniMax公式のAPIでも提供されています。

H3 Maxでは生成の速さにも注目できます。falは5秒の768P動画を3秒未満で生成すると報告しています。再生時間より短い時間で動画ができれば、カメラの動きや演技を変えながら複数案を試しやすくなります。

ただし、これはfalの公表値で、本記事で測定した結果ではありません。素材のアップロードや待ち時間もあるため、操作を始めてから動画を保存するまでが毎回3秒以内という意味ではありません。

解像度と入力条件の比較

解像度の扱いには違いがあります。公式APIのMiniMax-H3は768Pと2Kに対応しています。falのAPIを経由する場合は2Kや4Kも指定できますが、これらは768Pで生成した映像をアップスケール(拡大処理)したものです。

一方で、MiniMax-H3-Maxで指定できる解像度は480Pと768Pです。falではMaxにも画像・動画・音声の参照入力が用意されています。提供元によって使える機能が異なるため、モデル名だけでなく送信先のAPI仕様も確認します。

公式APIでは、H3もH3 Maxも最長15秒の映像を生成できます。

モデル 生成元 対応する主な解像度
MiniMax-H3 テキスト、画像、参照素材 768P、2K(fal経由は4K拡大も可)
MiniMax-H3-Max テキスト、開始・終了画像、参照素材(fal) 480P、768P

ローカルで動かせる公開データの内容

自分の環境にダウンロードして利用できるデータは、モデルを構成する一部に限られています。Hugging Faceで公開されているのは、基礎となるH3-Baseモデルなどのファイルです。学習で得た数値を保存した「重み」をダウンロードし、自分の計算機で動画を生成できます。

ただし、入力を解析するContext-IRと、映像を2Kで再生成するRegenerate-2Kは未公開です。公式の2K生成手順では、APIで解析した入力をローカルのH3-Baseへ渡します。そこで生成した768P動画と元の入力を、2K再生成のAPIへ送ります。

無料で試す方法とAPI料金

falの無料Web試用と従量課金APIの区別

APIを利用して料金を支払う前に、無料で動画生成を試せるページがあります。falが用意する専用の案内ページのボタンから、Sandboxと呼ばれる実行画面へ入ります。falは、ログインするとH3 Maxを直近24時間あたり5回まで無料で試せると案内しています。

この無料枠は最大15秒で解像度768Pの映像出力に対応しており、定期購入の登録なしで利用できます。ログイン後にH3 Maxの無料枠が適用されているか確認してから、動画の指示を入力してください。本記事ではアカウントへの無料枠の付与までは確認していません。この無料画面での操作は、使った分だけ支払うAPIの仕組みとは別のものです。

プログラムから指示を送るAPIを利用する場合は、生成時間に応じた従量課金が発生します。今回調べたMiniMax、fal、Replicate、Atlas Cloudの資料では、H3向けAPIの無料枠は確認できませんでした。AtlasのAPIでは、専用の計算エンドポイントに見積もりたい内容を送信すると、課金されずに実際の請求予定額を確認できます。

生成時間と解像度による料金の違い

映像を作る費用は、秒ごとの米ドル単価で計算されます。2026年9月4日時点で確認できた4社の提供元で、長さ5秒で解像度768Pの映像を生成する料金を比較します。falのAPIでMaxモデルを利用する際は、9月7日まで限定の割引価格が適用されています。

提供元 MiniMax-H3 (5秒・768P) MiniMax-H3-Max (5秒・768P)
MiniMax公式 0.40 USD 0.40 USD
fal 0.30 USD 0.10 USD(割引期間中、通常0.40 USD)
Replicate 0.40 USD 未確認
Atlas 0.40 USD (※内訳なし) 未確認

MiniMax公式APIのH3モデルは、768Pの単価が1秒あたり0.08米ドル、2Kが0.13米ドルです。そのためH3で5秒の2K映像を作ると0.65米ドルになります。falのMaxモデルは割引期間が終わると、480Pが1秒あたり0.05米ドル、768Pが0.08米ドルの通常単価に戻ります。

ReplicateのH3モデルも単価は公式と同じですが、Maxモデルの提供は確認されていません。Atlasでは文章から動画を作るモデルの表示単価が1秒あたり0.08米ドルとなっており、解像度別の内訳がありません。そのため、2Kでの高解像度出力を同じ単価で保証するものではありません。

入力する素材の費用

映像の元になる素材にも、種類や量によって入力料金がかかります。MiniMax公式APIのH3への画像入力は、最初の5枚まで無料、追加1枚あたり0.04米ドルと案内されています。ただし、5枚を数える単位は料金表に明記されていません。Maxモデルへの画像入力には現時点で課金が設定されていません。

MiniMax公式APIでは、音声を入力素材として使う場合も無料です。すでに存在する動画を読み込ませる場合は、映像の出力と同じ単価が適用され、768Pが1秒あたり0.08米ドル、2Kが0.13米ドルの費用として計算されます。

4社のAPIで送信からMP4保存まで

生成リクエストを一度送信し、ID保存・状態確認・MP4保存へ進む流れ

APIを利用して映像を作成し、手元のコンピューターへ保存する手順を解説します。木の机の上にある白いカップにカメラがゆっくり近づく、長さ5秒で解像度768Pの映像を作る指示を例にします。有料の動画生成は試しておらず、公開された仕様文書に基づいた実行手順を示します。あらかじめ映像の保存先を作成しておきます。

set -euo pipefail
mkdir -p output
curl --version
jq --version

生成の送信と状態確認の仕組み

APIキーは各社のAPI管理画面で取得します。各社のAPIアカウントへ料金が請求され、Webサービスの定期購入とは別の支払いになります。以下は、通信に使うcurlとJSONから値を取り出すjqを導入済みのBash環境で、選んだ1社のコードを同じ端末から順に実行する例です。

生成の指示を送信したら、応答に含まれる受理IDを保存します。作成には時間がかかるため、送信は一度にとどめ、IDを使った状態確認を繰り返します。

状態を確認して失敗が示された場合は処理を停止し、ダッシュボードから原因を調べます。待機中なら、数秒空けて状態確認のコードだけを再実行します。生成の成功を確認した時だけファイルの保存へ進みます。成功したURLから動画をダウンロードする際は、APIの認証情報を付けないように注意します。

curlの--fail-with-bodyはエラー応答も保存し、失敗を終了コード22に反映します。curl 7.76.0以降を使い、失敗したら後続へ進まず、保存したJSONで理由を確認します。

キーは履歴へ残さないよう、非表示入力で設定します。falなら次の例です。他社は変数名をMINIMAX_API_KEY、REPLICATE_API_TOKEN、ATLASCLOUD_API_KEYに置き換えます。

read -rsp 'fal API key: ' FAL_KEY
printf '\n'
export FAL_KEY

MiniMax公式APIの実行手順

MiniMax公式APIでは指定のエンドポイントへ映像生成の条件を送信します。管理画面でPay-as-you-go APIを選び、環境変数に設定したキーで認証します。応答をJSONファイルに保存し、そこから受理IDを抽出します。

curl --fail-with-body -sS -X POST "https://api.minimax.io/v2/video_generation" \
  -H "Authorization: Bearer $MINIMAX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"MiniMax-H3","content":[{"type":"text","text":"A plain white cup on a wooden table. The camera slowly moves closer. Quiet room tone, no music."}],"resolution":"768P","duration":5,"ratio":"16:9"}' > minimax_create.json

TASK_ID=$(jq -er '.task_id' minimax_create.json)

受理IDで状態を照会すると、成功時に動画URLが返ります。取得した状態がsucceededになった場合のみ、映像のURLを取り出してMP4ファイルを保存します。通信が途切れた場合はIDを使って再確認します。

curl --fail-with-body -sS -X GET "https://api.minimax.io/v2/query/video_generation/${TASK_ID}" \
  -H "Authorization: Bearer $MINIMAX_API_KEY" > minimax_status.json

case "$(jq -r '.task.status' minimax_status.json)" in
  succeeded)
    VIDEO_URL=$(jq -er '.task.content.url | select(type == "string" and length > 0)' minimax_status.json)
    curl -fLSs --output output/minimax.mp4 "$VIDEO_URL"
    ;;
  queued|running) printf '%s\n' '生成中です。10秒後にこの状態確認ブロックだけを再実行します。' ;;
  failed|cancelled) jq '.task' minimax_status.json; printf '%s\n' '生成が終了しました。エラーを確認し、POSTは自動再送しません。' ;;
  *) jq '.' minimax_status.json; printf '%s\n' '想定外の応答です。後続の保存処理を停止します。' ;;
esac

fal APIの実行手順

falのAPIでは生成指示に対する応答として、状態確認用と結果取得用の2つのURLが返されます。認証には専用のキーを使用します。状態確認用のURLへリクエストを送り、進行状況を調べます。

curl --fail-with-body -sS -X POST "https://queue.fal.run/minimax/h3-max/text-to-video" \
  -H "Authorization: Key $FAL_KEY" \
  -H "Content-Type: application/json" \
  -d '{"prompt":"A plain white cup on a wooden table. The camera slowly moves closer. Quiet room tone, no music.","prompt_expansion_mode":"balanced","resolution":"768P","duration":5,"aspect_ratio":"16:9"}' > fal_create.json

REQUEST_ID=$(jq -er '.request_id' fal_create.json)
STATUS_URL=$(jq -er '.status_url' fal_create.json)
RESPONSE_URL=$(jq -er '.response_url' fal_create.json)

確認結果がCOMPLETEDになってもそれだけで成功と判断せず、結果取得用のURLへ再度リクエストを送ります。入力値の不足や方針違反によるエラーは原因を直すまで再送を控えます。取得できたURLを確かめてから映像を保存します。

curl --fail-with-body -sS -X GET "$STATUS_URL" \
  -H "Authorization: Key $FAL_KEY" > fal_status.json

case "$(jq -r '.status' fal_status.json)" in
  COMPLETED)
    curl --fail-with-body -sS "$RESPONSE_URL" \
      -H "Authorization: Key $FAL_KEY" > fal_result.json
    VIDEO_URL=$(jq -er '.video.url | select(type == "string" and length > 0)' fal_result.json)
    curl -fLSs --output output/fal.mp4 "$VIDEO_URL"
    ;;
  IN_QUEUE|IN_PROGRESS) printf '%s\n' '生成中です。数秒後にこの状態確認ブロックだけを再実行します。' ;;
  *) jq '.' fal_status.json; printf '%s\n' '状態を確認できません。POSTは自動再送しません。' ;;
esac

Replicate APIの実行手順

ReplicateのAPIでは、H3モデル固有の入力形式に合わせて映像の長さや解像度を指定します。環境変数のキーを用いてBearer認証をおこないます。応答に含まれる値から確認用のURLを抽出し、このURLを使って状態を確認します。

curl --fail-with-body -sS -X POST "https://api.replicate.com/v1/models/minimax/h3/predictions" \
  -H "Authorization: Bearer $REPLICATE_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"input":{"prompt":"A plain white cup on a wooden table. The camera slowly moves closer. Quiet room tone, no music.","resolution":"768P","duration":5,"ratio":"16:9"}}' > replicate_create.json

PREDICTION_ID=$(jq -er '.id' replicate_create.json)
GET_URL=$(jq -er '.urls.get' replicate_create.json)

状態がsucceededになった場合のみ、出力された単一のURL文字列から映像を保存します。生成された映像ファイルのURLは通常1時間で失効するため、期限が切れる前に手元のフォルダへ保存します。

curl --fail-with-body -sS -X GET "$GET_URL" \
  -H "Authorization: Bearer $REPLICATE_API_TOKEN" > replicate_status.json

case "$(jq -r '.status' replicate_status.json)" in
  succeeded)
    VIDEO_URL=$(jq -er '.output | select(type == "string" and length > 0)' replicate_status.json)
    curl -fLSs --output output/replicate.mp4 "$VIDEO_URL"
    ;;
  starting|processing) printf '%s\n' '生成中です。2秒後にこの状態確認ブロックだけを再実行します。' ;;
  failed|canceled) jq '{status,error}' replicate_status.json ;;
  *) jq '.' replicate_status.json; printf '%s\n' '想定外の応答です。POSTは自動再送しません。' ;;
esac

Atlas Cloud APIの実行手順

Atlas CloudのAPIでは、送信の応答に含まれるIDを使って状態確認のエンドポイントへリクエストを送ります。環境変数のキーを用いて認証します。2K解像度を利用する時は、生成前に見積もりAPIで料金を確認できます。応答のdata.priceが見積額です。

curl --fail-with-body -sS -X POST "https://api.atlascloud.ai/api/v1/model/calculate" \
  -H "Authorization: Bearer $ATLASCLOUD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"minimax/h3/text-to-video","prompt":"A plain white cup on a wooden table.","resolution":"2K","duration":5,"ratio":"16:9"}' > atlas_price.json
jq -e '.data.price' atlas_price.json

以下は生成を依頼するコードです。見積もりとは送信先が異なり、ここでは料金表と同じ5秒・768Pにしています。

curl --fail-with-body -sS -X POST "https://api.atlascloud.ai/api/v1/model/generateVideo" \
  -H "Authorization: Bearer $ATLASCLOUD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"minimax/h3/text-to-video","prompt":"A plain white cup on a wooden table. The camera slowly moves closer. Quiet room tone, no music.","resolution":"768P","duration":5,"ratio":"16:9"}' > atlas_create.json

DATA_ID=$(jq -er '.data.id' atlas_create.json)

状態がcompletedまたはsucceededになれば、配列の最初の要素からURLを取得して保存します。HTTPエラーが発生した場合は、認証の不備や残高不足といった原因を管理画面やエラーコードから確認します。

curl --fail-with-body -sS -X GET "https://api.atlascloud.ai/api/v1/model/prediction/${DATA_ID}" \
  -H "Authorization: Bearer $ATLASCLOUD_API_KEY" > atlas_status.json

case "$(jq -r '.data.status' atlas_status.json)" in
  completed|succeeded)
    VIDEO_URL=$(jq -er '.data.outputs[0] | select(type == "string" and length > 0)' atlas_status.json)
    curl -fLSs --output output/atlas.mp4 "$VIDEO_URL"
    ;;
  created|processing) printf '%s\n' '生成中です。数秒後にこの状態確認ブロックだけを再実行します。' ;;
  failed) jq '.data | {status,error_code,error}' atlas_status.json ;;
  *) jq '.' atlas_status.json; printf '%s\n' '想定外の応答です。POSTは自動再送しません。' ;;
esac

画像とBlenderでショットを設計する

Blenderの開始画像をfalへアップロードしてH3 Maxで動画化する流れ

構図を決めてから動画を作りたいときは、テキストに開始画像を組み合わせます。画像で被写体の位置やカメラの向きを決め、動きや音を文章で指示する方法です。

画像入力の役割とプロンプトの書き方

MiniMax公式の記述によると、H3は開始画像に映っている構図から続く動きを作り、終了画像と組み合わせることで連続した場面の遷移を作成します。参照画像を使う場合は、画像の中の人物や物体、スタイルといった役割をプロンプト内で指示し、複数の要素を切り貼りしたコラージュ画像は避けます。

動画を手本にする場合は、falのH3 MaxでもReference-to-Videoから動画や音声を入力できます。プロンプトには、どの素材の何を使うかに加え、被写体の動作、カメラを動かす方向と速さ、環境音やBGMを記述します。

前節の例のように、「木の机の上にある白い無地のカップ。カメラはゆっくりと近づく。静かな室内音、音楽なし」といった指示を与えます。これにより、被写体を固定したままカメラを動かすといった映像表現を目指します。

Blenderを用いた開始画像の準備

構図を厳密に決める開始画像を作るため、無償の3DソフトウェアであるBlenderを用います。この例はBlenderでシーンを作成できる人向けです。画面内に木の机、白い無地のカップ、照明、カメラを配置し、shot01.blendという名前で保存しておきます。この操作自体にAPIキーは必要ありません。

保存したファイルをコマンドラインから開き、開始となる1フレーム目のみをPNG画像として書き出します。実行の際には読み込むファイルを先に指定し、出力するフレームを最後に指定します。

blender -b shot01.blend -o //renders/shot01_##### -F PNG -f 1

このコマンドを実行すると、指定したフォルダにshot01_00001.pngという画像ファイルが生成されます。この画像を生成の起点として使用します。

fal APIによる映像生成の実行例

作成したPNG画像を使って、falのAPIへImage-to-Video(画像からの映像生成)の指示を送ります。Web上の無料枠とは別に、APIを利用した生成時間に基づく従量課金が発生します。あらかじめローカルのPython環境にfal-clientをインストールし、環境変数にキーを設定しておきます。

python -m pip install fal-client
# FAL_KEYは前節の非表示入力で設定します。

プログラム内では、まず画像をアップロードしてURLを取得し、それをMaxモデルの入力条件として渡します。終了画像を指定しない場合でも、開始画像の縦横比に従って長さ5秒、解像度768Pの映像が生成されます。

生成に成功すると応答から結果のURLを取り出し、MP4ファイルを保存します。以下をgenerate_shot.pyに保存し、shot01.blendと同じフォルダでpython generate_shot.pyを実行します。仕様に基づく未実測の例で、完了までの待機はSDKが処理します。

from pathlib import Path
import urllib.request
import fal_client

Path("output").mkdir(exist_ok=True)
image_url = fal_client.upload_file("renders/shot01_00001.png")

arguments = {
    "image_url": image_url,
    "prompt": "A plain white cup on a wooden table. The camera slowly moves closer. Quiet room tone, no music.",
    "prompt_expansion_mode": "balanced",
    "duration": 5,
    "resolution": "768P"
}

result = fal_client.subscribe("minimax/h3-max/image-to-video", arguments=arguments)
video_url = result["video"]["url"]

urllib.request.urlretrieve(video_url, "output/shot01.mp4")

このSDK例は途中再開用のIDを保存しません。通信が途切れたら、再実行する前にfalの履歴を確認してください。

出力結果の確認と次の修正

映像が保存できたら、未加工の出力内容を再生して確認します。この例では、カップの輪郭や机との接触面、カメラの寄る方向を見ます。静かな室内音があり、不要な音楽がないかも確かめます。

被写体が途中で変形したり、突然別のカットに切り替わったり、不要なBGMが鳴っていたりする場合は、そのカットを使わずに作り直します。画像を入力しても生成結果が毎回同じになるとは限らず、常に成功が保証されるわけではありません。

思い通りの動作にならないときは、開始画像を変えずにカメラの動きだけを弱めるなど、変更点を一つに絞って作り直します。画像と指示を一度に変えると、何が結果に影響したのか比べにくくなるためです。

Blenderから渡すのはPNG画像なので、H3が3Dモデルの形をそのまま動かすわけではありません。別のカットを作るときは、同じシーンでカメラの位置を変え、開始画像を書き出します。生成した動画の中から被写体の形や色がそろうカットを選び、動画編集ソフトでつなぎます。

カメラの動きまで決めるなら、下書き動画を渡す

H3には画像だけでなく、動画も参照素材として渡せます。Blenderでカメラや人物を動かした短い動画を作れば、開始画像だけでは伝えにくい動きも手本として示せます。撮影前に構図や動きを確かめるこうした下書き動画は、プリビズと呼ばれます。

例えば、白いカップの周囲をカメラが回る動画をBlenderで作り、falのH3 Maxへ渡します。カップの見た目は画像、カメラの移動は動画で指定し、「画像のカップを使い、動画と同じ向き・速さでカメラを動かす」と指示します。

Blenderでカメラの位置と回転にキーフレームを打ち、24fpsで120フレームの動きを作ります。出力設定でFFmpeg Video、コンテナをMPEG-4、映像コーデックをH.264に選び、Render Animationで5秒の動画を書き出します。保存した動画はrenders/shot01_previs.mp4として用意します。

前のPython例と同じ環境で、次のコードをgenerate_previs_shot.pyに保存し、python generate_previs_shot.pyで実行します。PNGを見た目の参照、MP4をカメラ移動の参照としてfalへ送ります。認証には同じFAL_KEYを使い、無料Web枠ではなくAPI料金がかかります。

from pathlib import Path
import urllib.request
import fal_client

Path("output").mkdir(exist_ok=True)
image_url = fal_client.upload_file("renders/shot01_00001.png")
previs_url = fal_client.upload_file("renders/shot01_previs.mp4")

result = fal_client.subscribe(
    "minimax/h3-max/reference-to-video",
    arguments={
        "reference_image_urls": [image_url],
        "reference_video_urls": [previs_url],
        "prompt": "Use Image 1 for the white cup and wooden table. Follow the camera movement and timing of Video 1. Keep one continuous shot. Quiet room tone, no music.",
        "prompt_expansion_mode": "balanced",
        "duration": 5,
        "resolution": "768P",
        "aspect_ratio": "16:9",
    },
)
urllib.request.urlretrieve(result["video"]["url"], "output/shot01_previs_result.mp4")

参照動画は1本2〜15秒、合計15秒以内です。画像・動画・音声の参照ファイルは合計12個まで指定できます。入力素材によって料金が変わるため、実行前にReference-to-Videoの料金表示を確認します。失敗した場合はエラーとfalの履歴を確認し、自動では再送しません。

このコードはAPI仕様に基づく未実測の例です。生成したoutput/shot01_previs_result.mp4と下書き動画を見比べ、カメラの回る向きや速さ、カップの位置を確認します。動画を参照させても、Blenderの軌道が数値どおりに再現される保証はありません。

3Dで動きを決めてからAIで仕上げる制作例として、HiggsfieldのBlenderプラグインも参考になります。こちらはSeedance 2.5を使う例ですが、スマホを動かしてBlender内のカメラを操作する機能も紹介されています。

ComfyUIでローカル実行する手順

ComfyUIのローカルGPU実行とクラウドAPIノードの違い

自分のGPUでH3を動かすには、ComfyUIを使う方法があります。ComfyUIは、モデルの読み込みや画像の入力などの処理を「ノード」と呼ばれる箱でつないで、生成手順を組み立てるソフトです。

ネイティブ実行とAPIノードの違い

ComfyUI上には、MiniMaxを実行するための複数のノードが存在します。追加機能として提供されるPartner APIノードは、ComfyUIのアカウントを通じたクレジットによる別課金が発生するクラウド呼び出しの仕組みです。操作画面が手元にあっても、実際の処理は手元のハードウェアでおこなわれません。

これに対して、自分のGPUで直接処理する場合は、APIの従量課金は発生しません。計算にかかる時間と電気代は自身の負担となります。ネイティブ実行で利用するのは、公開されているH3-Baseモデルです。

必要なハードウェアの動作条件

映像と音声を同時に生成するモデルは規模が大きく、すべてのパソコンで動く最低保証はありません。別の実行ソフトSGLangの公式例には、RTX 4090の24GB構成や、12GBのVRAMと32GBのRAMを使う構成があります。VRAMはGPU側、RAMは本体側のメモリです。

ただし、このRAM容量の試験は、2TBのメモリを持つ機械でデータがメモリに残る条件を使っています。実際の32GB機ではディスク読み込みが増え得るため、ComfyUIも同じ容量と速度で動くという保証には使えません。自身のGPUと空きRAM、ディスク容量を確認してから試します。

Mac向けには、Apple SiliconでH3を動かす独自実装のh3.cも公開されています。開発者は、映像・音声生成と画像・動画・音声の参照入力が動作し、M3 MaxとM5 Maxで速度やメモリ使用量を調整中と説明しています。

これはComfyUIとは別の実行ソフトです。Macでも試せる実装が登場していますが、本記事では実機で確認していません。すべてのMacで同じ条件や速度で動くという案内ではないため、導入前に開発元READMEの更新状況と動作条件を確認してください。

モデルファイルの取得と配置場所

実行の準備として、ComfyUIのバージョン0.30.0以降を開き、Template LibraryからVideoの項目にあるH3テンプレートを選択します。表示された案内に従ってHugging Faceからモデルをダウンロードし、下表のフォルダへ配置してから生成を始めます。

ファイルの種類 選択と注意点 配置するフォルダ
映像モデル minimax_h3_fl2va_pruned_int8_convrot.safetensors models/diffusion_models/
テキストエンコーダー(文章をモデルの入力へ変換) qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors models/text_encoders/
VAE(内部表現を映像・音声へ変換) minimax_h3_video_vae_fp16.safetensors と minimax_h3_audio_vae_fp32.safetensors models/vae/
LoRA(追加学習した差分。高速モードで使用) minimax_h3_fl2v_turbo_8step_v1.0_comfyui_bf16.safetensors models/loras/

表は開始画像を使うテンプレートの組み合わせです。参照素材用では映像モデルとLoRAも変わるため、テンプレートのダウンロードリンクで確認します。まずテンプレートが指定する組み合わせを使い、対応しない重み形式を別の形式と混在させないようにします。大容量なので、ダウンロード欄の容量とディスクの空きも照合します。

入力条件の制限と生成の確認

配置したH3-BaseのFL2VAモデルは、テキストからの生成と画像からの生成に対応します。参照素材を使って生成する場合はRef2VAモデルを選びます。画像から映像を作る場合は、Load Imageノードで手元のPNG画像を読み込み、first_frameへつなぎます。終了画像となるlast_frameの入力は任意です。

途中にも画像を置く場合は、追加の接続操作が必要です。I2Vテンプレートの「Image to Video (MiniMax H3)」の入力欄ではない空白部分をダブルクリックし、内部のノードを編集する画面を開きます。

ComfyUIを更新し、ノード検索からMiniMaxH3AddGuideを追加します。このノードが追加された更新版が必要です。H3ノードから生成条件のpositiveと内部表現のlatentをつなぎ、imageへ画像、vaeへ映像用VAEを接続します。

AddGuideを挟んだ後は、そのpositive出力をBasicGuiderのconditioningへ、latent出力をSamplerCustomAdvancedのlatent_imageへつなぎます。公式I2VテンプレートのH3から先の2本の接続を、AddGuideの出力に置き換える形です。

例えば124フレームの動画の途中へ画像を置くなら、frame_idxを60にします。複数のAddGuideをつなげば、別の位置にも画像を指定できます。

出力サイズは次の値から始めます。Resolution Selector(出力サイズ選択)で16:9、Megapixelsを0.98、Multipleを32に設定します。Megapixelsは画素数の目安、Multipleは辺の寸法を指定の倍数へそろえる項目です。

0.98は目標値であり、出力の正確な画素数ではありません。縦横比と32の倍数への丸めを経て、この設定では1344×768になります。画素数の上限は768×1344=1,032,192です。Megapixelsを1.0にすると1376×768になり、上限を超えるため避けます。

I2Vテンプレートの「Image to Video (MiniMax H3)」へ戻り、prompt欄に前節の白いカップの英語指示を入れ、durationを5にします。公式テンプレートは秒数を24fpsのフレーム数へ変換して補正するため、この指定では124フレーム、約5.17秒になります。

ローカル生成も本記事では未実測です。準備が整ったらRunボタンを押して生成を開始します。処理が終わると、ComfyUIのoutputフォルダにMP4ファイルが保存されます。保存された映像を再生し、指定した最初のフレームと最後のフレームが含まれているか、音声が鳴っているか、意図した長さに達しているかを確認します。

利用者が試している長尺生成

公開モデルでは、公式の対応尺を超える実験も進んでいます。Redditには、RTX 5090で27秒の動画を一度に生成し、約9.3分かかったという報告があります。投稿者は高速化用の追加モデルなどを組み合わせています。

同じ投稿では、30秒付近になると映像の不整合や生成停止が起きたとも説明しています。27秒は公式の保証値ではなく、その構成で得られた実験結果です。長い動画を試す場合も、まず短い映像で動作を確認してから尺を延ばすと、不具合が出始める条件を比べられます。

商用利用と公開前に確認する条件

利用経路・ライセンス、地域・売上、素材の権利と表示を公開前に確認
日本での条件付き商用利用は無料です。図の書面確認は、海外配信など許諾範囲を確定できない用途について行います。完成動画ではAI生成の表示が必要で、H3のモデル名記載は推奨です。

日本でH3の公開モデルを動かす場合、条件を守れば商用利用もできます。ただし、モデルの利用料、動画の配信地域、公開時の表示には、それぞれ別の条件があります。以下は2026年9月4日時点の確認内容です。

日本での商用利用と売上条件

MiniMaxの公式FAQは、公開モデルを研究にも商用にも利用料なしで使えると説明しています。日本はライセンスの対象地域です。自分のGPUで動かす場合、ハードウェア代や電気代はかかりますが、動画を生成するたびにAPI料金が発生するわけではありません。

Community Licenseの第2条が無料の利用を認め、第4条1項が売上条件を定めています。商用製品・サービスの年間売上が2,000万米ドルを超える場合は、MiniMaxの事前の書面許諾が必要です。この条項に、有料契約の金額は書かれていません。

公式Q&Aでも、日本の個人がこの売上条件を下回る範囲でYouTubeを収益化する例に、追加の許諾は不要と回答しています。ただし、この回答だけで海外への配信条件まで解決したとはいえません。

月額5,000ドルはComfyの有料ライセンスの価格

Comfyのライセンス販売ページにある月額5,000米ドルからの料金は、Professional契約の価格です。最大10ユーザーで、顧客向けの制作などを含むプランとして案内されています。

同ページには、ローカルで商用利用する人は全員契約が必要という説明もあります。しかし、MiniMaxのCommunity Licenseと公式FAQは、条件付きの無料商用利用を認めています。日本の利用者全員に、月額5,000米ドルの支払いが必要なわけではありません。

海外への公開・納品には地域制限が残る

Community Licenseの第1条5項は、米国、EU、英国、韓国を対象外としています。第5条4項は、モデルだけでなく生成した動画などの出力も、対象外の地域で利用・配布・表示することを認めていません。日本で生成した動画だから、世界中へ自由に配信できるとは読めない条文です。

一方、MiniMaxの公式Q&Aでは、豪州の個人がYouTubeで世界に公開する例に、申請不要と回答しています。別の回答では、スイスの会社が米国やEUの顧客へ動画を納品する例に、ライセンス手続きを案内しています。

こうした個別回答から、海外への配信を一律に許可する条件までは確認できません。海外向けの納品や地域を限定しない公開では、生成する国、公開・納品先、収益化の有無をMiniMaxへ伝えます。その用途に追加許諾が必要かを書面で確認してください。

公開動画にはAI生成であることを示す

公開モデルで作った動画を公開する場合は、AI生成であることを明示します。これは利用ルールであるAUPの第12条に定められています。公式Q&Aでは、投稿先のAI生成表示機能と説明文への記載で対応でき、動画内に文字を焼き込む必要はないと説明しています。

「MiniMax H3」というモデル名の記載は、完成した動画では推奨にとどまります。一方、H3を組み込んだ商用ソフトやサービスを提供する場合は、第4条2項により、その操作画面にモデル名を表示します。動画の投稿と、動画生成サービスの提供では表示条件が異なります。

MiniMaxは生成物への権利を主張しないと第6条4項に記しています。ただし、入力した画像や音声の権利、第三者の肖像権などを利用者が確認する責任は残ります。

APIを使う場合は提供元の条件に従う

falのH3 Maxのページには商用利用可能と表示されていますが、falのサービス利用条件や入力素材の権利も確認します。この表示は、他社APIや、自分のGPUで公開モデルを動かす場合の許諾を示すものではありません。

APIで作った動画を公開・納品する場合は、利用した提供元の契約で商用利用と配信地域を確認します。公開モデルのCommunity LicenseとAPIサービスの契約を混同しないようにしてください。

よくある質問

Q1. 生成を指示した直後に通信が切れた場合はどうすればよいですか

自動で同じ指示を再送しないでください。すでに受け付けられていた場合、重複して課金される恐れがあります。保存済みの受理IDや提供元の利用履歴を確認し、IDがある場合は状態確認だけを実行します。IDが不明な時はサポートへ照会します。

Q2. 取得した映像のURLを開いてもエラーになるのはなぜですか

ReplicateのAPI出力URLは、通常1時間程度で期限切れになります。失効したリンクを再度取得しても映像が復活するとは限りません。まずは手元のコンピューターにMP4ファイルがすでに保存されていないか確認してください。

Q3. 用意したPNG画像をAPIへ渡しても読み込めない時の確認点は何ですか

本記事のfalの例では、手元のファイルパスではなく、アップロード後のURLを渡します。URLが期限切れでないか、ログインなしで画像を取得できるかも確認してください。


メディアを購読する

ソフトウエア広告・出版・マスコミ
冨田到をフォローする

コメント

タイトルとURLをコピーしました