【ComfyUI】AnimateDiffで動画生成時にフレーム数がおかしい・動かない問題の解決法

問題の概要:AnimateDiffで動画生成時のフレーム制御エラー

ComfyUIのAnimateDiffを使用して動画を生成する際、以下のようなフレーム制御に関する問題が頻繁に発生します。

  • 生成される動画のフレーム数が想定(例:16フレーム)よりも少ない(例:8フレーム)
  • 「AnimateDiff Loader」ノードで設定した「ビデオ長(frames)」が無視される
  • 動画が生成されず、静止画のみが出力される
  • エラーメッセージは出ないが、意図したアニメーションが得られない

具体的には、ワークフローを実行してもコンソールにエラーは表示されず、生成される動画ファイル(.mp4または .webp)のフレーム数が設定値と一致しないという、初心者を特に悩ませる「サイレントな不具合」です。

原因の解説:複数の設定箇所の不一致

この問題の根本原因は、ComfyUIとAnimateDiffのフレーム制御に関する設定が複数のノードに分散しており、それらの設定が互いに矛盾していることです。AnimateDiffは単体のモデルではなく、ComfyUIの「ワークフロー」というパイプライン内で動作するため、各パーツの連携が重要になります。

主な原因は以下の3点です。

1. 「AnimateDiff Loader」ノードと「KSampler」ノードのステップ数不一致

「AnimateDiff Loader」ノードで「ビデオ長(frames: 16)」を設定しても、「KSampler」ノードの「ステップ数(steps)」が少なすぎると(例:20ステップ)、すべてのフレームを計算するのに十分な「ステップの余裕」がなくなります。結果、中間フレームがスキップされ、短い動画が生成されます。

2. フレーム数とバッチサイズの関係の誤解

AnimateDiffは内部的にバッチ処理を行います。「ビデオ長(frames)」の設定は、このバッチサイズを指定しています。しかし、この値が「Empty Latent Image」ノードで生成する潜在空間のバッチサイズと一致していない場合、正しく処理されません。

3. 出力ノード(Save Image/Video)の設定見落とし

動画ファイルとして保存するためのノード(例:「ComfyUI-VideoHelperSuite」のノード)で、フレームレート(fps)や出力フォーマットの設定が不適切な場合、プレビューでは正しく見えても、保存されるファイルのフレーム数が失われることがあります。

解決方法:ステップバイステップでの設定統一

以下の手順で、すべての関連ノードの設定を統一することで問題は解決します。

ステップ1: ワークフローの基本構造を確認

AnimateDiffを使用した基本的な動画生成ワークフローは以下のノードで構成されます。

  1. Checkpoint Loader(Stable Diffusionモデル読み込み)
  2. CLIP Text Encode(プロンプト入力)
  3. Empty Latent Image(潜在空間生成) ← 重要
  4. AnimateDiff Loader(モーションモジュール読み込み) ← 重要
  5. KSampler(画像生成)
  6. VAE Decoder(潜在空間を画像に変換)
  7. 動画保存ノード(Save Animationなど) ← 重要

ステップ2: 「Empty Latent Image」ノードの設定

このノードで、生成する動画の幅(width)、高さ(height)、そしてバッチサイズ(batch_size)を設定します。この`batch_size`が、生成したい動画のフレーム数になります。

設定例:
width: 512
height: 512
batch_size: 16  # ここで16フレームの動画を指定

ポイント: `batch_size`は「AnimateDiff Loader」で設定する「ビデオ長(frames)」と完全に一致させる必要があります。

ステップ3: 「AnimateDiff Loader」ノードの設定

「AnimateDiff Loader」ノードをダブルクリックし、詳細設定を開きます。以下のパラメータを確認・設定します。

必須設定:
video_length (frames): 16  # 「Empty Latent Image」のbatch_sizeと一致させる(例: 16)
format: 選択肢から適切なものを選ぶ(例: "default" または "movement")

推奨設定(初期トラブル時):
loop: 有効(Enabled) # ループ補間を有効にすると滑らかになりやすい
closed_loop: 無効(Disabled) # 初心者は無効推奨

ステップ4: 「KSampler」ノードのステップ数調整

「KSampler」ノードの「ステップ数(steps)」は、「Empty Latent Image」の`batch_size`(フレーム数)よりも十分に大きい値に設定します。目安は以下の通りです。

steps >= (batch_size * 2) 以上が安全
例:batch_size=16(フレーム) → stepsは32以上を推奨

これは、サンプラーが各フレーム間の変化を計算するのに十分な「時間」(ステップ)が必要なためです。ステップ数が少なすぎると、フレームが省略されて生成されます。

ステップ5: 動画保存ノードの設定(例:Video Helper Suite)

「VAE Decoder」の出力を動画ファイルに保存するノードを正しく設定します。「ComfyUI-VideoHelperSuite」をインストールしている場合の例です。

ノード: VHS_VideoCombine
設定例:
frame_rate: 8  # 1秒あたりのフレーム数。fps=8、フレーム数=16なら動画長は2秒。
loop_count: 0
filename_prefix: "AnimateDiff_Output"
format: "video/h264-mp4"  # MP4形式で保存

重要: このノードの入力として、単一の画像ではなく、画像のバッチ(リスト)が接続されているかを確認してください。バッチ接続されていないと、連続したフレームとして認識されず、動画になりません。

コード例・コマンド例:問題のあるワークフローと修正後

以下は、典型的な設定ミスとその修正を示す擬似コードです(実際のComfyUIはJSONワークフローですが、概念を示します)。

問題のある設定(フレーム数が半分になる例)

# ❌ 間違った設定例
Empty Latent Image:
  batch_size = 16  # 16フレームを意図

AnimateDiff Loader:
  video_length = 16  # 一見合っているが…

KSampler:
  steps = 20  # 16フレームを20ステップで処理するのは不足!
  # 結果: 約8-10フレーム程度しか生成されない

修正された設定

# ✅ 正しい設定例
Empty Latent Image:
  width = 512
  height = 512
  batch_size = 16  # フレーム数

AnimateDiff Loader:
  video_length = 16  # batch_sizeと一致
  format = "default"

KSampler:
  steps = 35  # batch_size(16)の2倍以上。余裕を持たせる。
  cfg = 8.0
  sampler_name = "euler"
  scheduler = "normal"

# 保存設定 (Video Helper Suite 使用例)
VHS_VideoCombine:
  input_frames = [画像バッチリスト]  # 16枚の画像がリストとして入力
  frame_rate = 8  # 8fps
  format = "video/h264-mp4"
  # 出力: 2秒間(16フレーム / 8fps)の動画ファイル

まとめ・補足情報

ComfyUIのAnimateDiffでフレーム制御の問題が発生した場合、まずは「Empty Latent Imageのbatch_size」、「AnimateDiff Loaderのvideo_length」、「KSamplerのsteps」の3点セットの関係性を疑いましょう。これらを整合させるだけで、大部分の問題は解決します。

追加のトラブルシューティングTips:

  • モデルの互換性: 使用しているStable Diffusionチェックポイント(モデル)がAnimateDiffと互換性があるか確認してください。特にSDXLモデルは専用のAnimateDiffモジュールが必要な場合があります。
  • メモリ不足: フレーム数(batch_size)や解像度を大きくしすぎるとGPUメモリ不足(OOMエラー)になり、処理が途中で止まることがあります。フレーム数は8, 16, 24などから試し、解像度は512×512が無難です。
  • カスタムノードの更新: AnimateDiff LoaderやVideo Helper Suiteなどのカスタムノードは更新が頻繁です。マネージャーから最新版に更新してみてください。
  • ワークフローのインポート/エクスポート: 正常に動作するワークフローJSONを一度エクスポートし、テキストエディタで`batch_size`、`video_length`などのキーワードを検索して、すべての設定値を確認する方法も有効です。

AnimateDiffは強力な動画生成ツールですが、ComfyUIの「ノードを繋ぐ」という性質上、設定の統一が最も重要なポイントです。基本の3点セットを押さえ、段階的に複雑な設定に進むことで、思い通りのアニメーション生成が可能になるでしょう。

この記事は役に立ちましたか?