みなさん大好きでしょ。AIによる動画生成
今回は、ComfyUI を AI から制御して動画生成までやってみたお話です。
ComfyUI は、ノードベースの画像生成 UI なんですが、これが動画生成にも対応しているということで、ちょっと触ってみました。
とは言っても、ComfyUI を起動して、ワークフローを作って、なんてやってるのは、普通ですね。
ていうか、謎のパーツがあって、何に使うのかも、よくわからんし、面倒ですよね。
なので、AI から自然言語で操作できるようにしてみました。
ComfyUI には、MCP (Model Context Protocol) という、AI エージェントと通信する仕組みが用意されています。
これを使うと、AI が ComfyUI のテンプレートを探したり、ワークフローを実行したり、生成された画像や動画を取得したり出来るんですね。
AI に「こんな動画作って」とお願いするだけで、裏側で ComfyUI が動いて、出来上がった動画が手元に届く、っていう仕組みです。
で、ComfyUIを制御するAIが、opencodeです。
最近、opencodeをめっちゃ使ってまして、普通に開発から、Linuxまわりの環境構築、ブラウザを使った面倒な作業まで、色々と使ってます。
とりあえず、opencodeを使えば、shell経由で、だいたいのことをやってくれるので、大変たすかりますよ。
環境
今回は、こんな環境で動かしました。
- WSL2 Ubuntu 26.04
- NVIDIA RTX 5060 Ti (VRAM 16GB)
- AMD Ryzen 5 8400F
- RAM 32GB
ローカルで動かせるレベルとしては、無理かと思ってましたが、なんとかなるようになってきました。
16GB の VRAM だと、正直、動画生成はギリギリのラインです。
1年ぐらい前なら、ほぼ無理だったんですが、効率の良いモデルが爆誕したので、これぐらいのスペックでも、動画生成出来るようになったんですね。
セットアップ
ComfyUI 本体は、git から clone してきて、Python の venv を作成、依存ライブラリをインストール、という、いつもの流れです。
その上で、comfy-cli と comfy-mcp を pip でインストールします。
pip install "comfy-cli>=1.14.0" comfy-mcp
あとは、opencode の設定ファイルに、comfy-mcp を MCP サーバーとして登録すれば OK です。
{
"mcp": {
"comfy-mcp": {
"type": "local",
"command": ["/root/.comfyui/bin/comfy-mcp"],
"enabled": true,
"env": {
"COMFY_BIN": "/root/.comfyui/bin/comfy"
}
}
}
}
opencode を再起動すれば、AI から ComfyUI が操作出来るようになります。
動画生成してみる
お題は、日本の田舎の風景です。
「茅葺き農家と田んぼと鳥居と桜、みたいな感じで」と、AI に丸投げします。
モデルは MiniMax H3 っていう、omni-modal なモデルを使います。
映像と音声を同時に生成してくれる、最強のモデルですね。
風鈴の音とか蛙の鳴き声を、プロンプトに書くと、それも生成してくれます。
最初に 5 秒版を作ってみました。 すると、約 13 分で出来上がってきました。
ファイルサイズは 830KB、864×480 の解像度で、24fps の動画です。
短すぎたので、もう少し長くしてみます。
- 10 秒版: 約 25 分
- 15 秒版: 約 37 分
- 20 秒版: 約 50 分
大体、尺に比例して生成時間が伸びていく、という感じですね。
VRAM の使用量は、尺に関係なくほぼ同じで、12〜13GB 程度です。
長い動画でも VRAM 的に安心なのは、モデル本体が VRAM の大半を占めるからですね。
動画を見てみる
生成された動画を確認したところ、こんな傾向がありました。
- 5 秒版: 田舎の風景がバッチリ出ています
- 10 秒版: 夕焼けから夕闇への時間進行が、自然に表現されていました
- 15 秒版: 2 つのシーン (農家と鳥居) を組み合わせたものですが、Scene 2 (鳥居) は、プロンプトで指示したタイミングより少し遅れて出てくる傾向がありました
- 20 秒版: ほぼ同じ傾向で、文字を含む要素 (鳥居の扁額) が崩れやすくなっていました
これは、MiniMax H3 の内部構造に原因があって、17 フレーム ≒ 0.7 秒を 1 ブロックとして、ブロック単位で生成しているからなんですね。
だから、シーン切り替えのタイミングは、ブロックの境界と一致しないといけません。
解像度を上げる
MiniMax H3 が出力してくれる動画は、現状 864×480 の低解像度です。
これでも見れるっちゃ見れるんですが、せっかく作った動画ですから、もう少し綺麗に仕上げたいですよね。
ということで、超解像 (アップスケール) の出番です。
定番は、SeedVR2 っていうモデルを使ったアップスケールで、これを使うと低解像度の動画から自然な高解像度動画を生成することが出来ます。
ComfyUI のテンプレートにも、SeedVR2 系のワークフローが用意されているので、それを使えば OK です。
超解像は、字幕を入れる前にやるのがポイントです。
字幕を後付けで焼き込む場合は、超解像の後に字幕を入れると、字幕も一緒に高解像度化されて綺麗に仕上がります。
逆に、字幕を入れた後にアップスケールすると、字幕が滲んでしまうので、順番が大事ですね。
一貫性を保つコツ
動画を生成していて、結構大事なのが「シーンの一貫性」ですね。
プロモーション動画を作っていると、結構多いのが「8 シーン連続で同じ主人公が映る」みたいなケースです。
こういう時、普通の text-to-video や、参照なしの image-to-video だと、衣装・髪型・顔の骨格がシーンごとに微妙に変わってしまう、いわゆる「別人問題」が起きます。
1 シーンだけなら気にならないんですが、連続で出てくると、視聴者は「あ、誰か別の人が出てきた」みたいに違和感を感じてしまいます。
そこで、referenced-to-video (r2v) 系のモデルを使うと、この問題が改善できます。
今回は、MiniMax H3 r2v (Referenced-to-Video) というのを使います。
ざっくり言うと、基準となる静止画を 1 枚用意して、それを全シーンで参照しながら、衣装や髪型を保ったまま、動き・カメラワーク・表情変化を生成する、という仕組みですね。
8 シーン連続で同じ主人公を出したケースでは、主人公の顔・髪型・服装が「同じ人物」として視聴者に認識できるレベルで統一されました。
使い方のコツは、こんなところです:
- 基準画像は 1 枚だけで OK (1 キャラクター 1 ファイル)。表情は「中性的」にしておくと、後で泣き顔とか真剣な顔とか、表情変化が出しやすいです
- 基準画像は正面、または半正面で、衣装・髪・顔がクリアに見えるもの。背景はシンプルな単色が安定します
- プロンプトの先頭に「Aiko: 26yo woman, shoulder-length black hair, ...」のように共通キャラ定義を書く
- prompt_strength は全シーン同じ数値にする (0.65〜0.80 程度が無難)
- 衣装・髪型の指定は共通キャラ定義の中だけに集約して、シーンプロンプトでは触らない
- negative_prompt で「second character, sudden costume change」などを明示的に除外する
特に prompt_strength の数値を全シーンで揃えるのは、結構大事です。
ここでズレると、衣装や顔の忠実度がシーンごとに揺れて、結局「別人問題」が再発します。
また、同じ衣装で 8 回生成しても、5〜6 回目あたりで稀にアクセサリや装飾が変化することがあるので、そうなったらプロンプトや seed を変えて再生成するか、インペイントで部分修正します。
これだけで、複数シーンでも結構安定した動画が作れます。
画像生成も試してみる
動画とくれば、画像も、ということで、Flux.1 Dev FP8 も試してみました。
必要なモデル (unet, clip_l, t5xxl, ae) は全部インストール済みだったので、テンプレート取得 → スロット設定 → 実行、という流れです。
「健康な 16 歳の男子が、日本の田舎の田んぼではしゃいでいる」みたいなプロンプトで、約 82 秒で生成完了。
1024×1024 の PNG 画像が、約 1MB で出てきました。
まとめ
ComfyUI MCP を使うと、AI から自然言語で動画生成が簡単に出来ました。
特に、MiniMax H3 は、映像と音声を同時に生成してくれるので、BGM を後から付ける、みたいな手間が無くて良いですね。
16GB VRAM でもギリギリ動く、というのもありがたいところです。
長い動画も、25 秒以内なら実用的な品質で生成できることが分かりました。
それ以上の長さは、複数の短尺動画を ffmpeg で結合する方が安定すると思います。
ということで、ComfyUI MCP、ぜひ試してみてください。





