AI動画生成の出来を決めているのは、モデルの性能よりも指示の粒度です。同じツール・同じ尺・同じ解像度でも、プロンプトの書き方を変えるだけで、出てくる映像は別物になります。実際に同じ題材で2本作ったところ、1本目は被写体がその場で足踏みするだけ、2本目は指定した回転を最後まで踊りきりました。違いはプロンプトの2箇所だけです。
AI動画ツールの紹介記事は「すごい」か「まだ使えない」のどちらかに寄りがちです。ただ実際に触ってみると、同じツールでも当たりと外れの差が激しく、その差がどこから来ているのかは書かれていません。課金する前に知りたいのは「このツールは高性能か」ではなく、「自分が書いた指示で、狙ったものが出てくるのか」のほうです。
この記事では、テキストから動画を作るAIツール「DomoAI」で6本の動画を生成し、失敗した1本目から成功した6本目までの差分を追います。出来上がりの印象で語らず、生成した動画ファイルをffmpegでフレーム単位・音量単位まで分解して確かめました。写真を起点にする方式や無料枠の使い勝手については 生成AIで写真から動画を作る で別途扱っています。この記事はテキストから作る場合の指示の書き方に絞ります。
同じツール・同じ設定で、ここまで変わる
最初に結論から見てもらいます。次の2本はまったく同じツール・同じモデル・同じ尺(10秒)・同じ縦横比(9:16)・同じ解像度(720P)で生成したものです。題材もどちらも「人がダンスする実写映像」で揃えています。違うのはプロンプトの文面だけです。
ツールを乗り換えたわけでも、上位プランに課金したわけでもありません。指示の出し方を変えただけです。以降で、何を書いて失敗し、何を変えて成功したのかを順に見ていきます。
検証の条件をそろえる
比較が成立するように、プロンプト以外の条件は固定しました。2026年9月2日に実施した内容です。
| 項目 | 設定 |
|---|---|
| ツール | DomoAI(テキスト→動画生成) |
| モデル | Seedance 2.0 Fast |
| 尺 | 10秒(比較用に1本だけ5秒) |
| 解像度 | 720P |
| 縦横比 | 9:16 または 16:9 |
| 音声 | オン |
| 生成本数 | 6本 |
| 検証方法 | 生成物を FFmpeg でフレーム抽出・音量測定 |
検証方法について補足します。AI動画の評価は「なんとなく良い/悪い」に流れやすいのですが、それだと再現できる知見になりません。そこで生成したMP4をダウンロードし、ffmpegで0.2秒刻みのフレームを抜き出して並べ、音声は1秒ごとの平均音量を測りました。「動いている気がする」ではなく「何秒で何が起きたか」を数えられる状態にしています。
コンタクトシート(連続フレームを1枚に並べた画像)を作るコマンドは次のとおりです。
# 0〜10秒を0.5秒刻みで抜き出し、10列×2段の1枚にまとめる
ffmpeg -i input.mp4 -vf "fps=2,scale=200:356,tile=10x2" -frames:v 1 sheet.jpg
# 1秒ごとの平均音量を測る
for t in 0 1 2 3 4 5 6 7 8 9; do
ffmpeg -hide_banner -ss $t -t 1 -i input.mp4 -af volumedetect -f null /dev/null 2>&1 \
| grep mean_volume
done失敗した1本目に、何を書いたか
そもそもの1本目は、Webサイトのヒーローセクションに敷く背景ループを狙って、日本語でこう書きました。
Webサイトのヒーローセクションに敷く背景ループ映像。深い紺色の空間を、青と紫の光の粒子がゆっくり右へ流れる。抽象的でミニマル、白い文字を重ねても読めるよう明暗差は控えめ。カメラは固定、動きは滑らか。
出てきたのは、紺色の背景に青白い粒がびっしり散っただけの映像でした。指示自体は守られています。紺色で、粒子が流れていて、抽象的で、カメラも動いていません。守られたうえで、平凡でした。
原因は書いた言葉の性質にあります。「ミニマル」「控えめ」「滑らか」は強度を下げる方向の形容詞ばかりで、映像として何を起こすかを1つも指定していません。粒子が「ゆっくり右へ流れる」以外に、カメラの動き・光の質・レンズの性格に関する記述がゼロでした。AIは書かれていない部分を平均的な無難さで埋めるので、結果も平均的な無難さに着地します。
結果を変えた3つの原則
6本を通して効いたのは次の3点です。順に見ていきます。
1. カメラ・レンズ・光を必ず指定する
被写体だけを書くと壁紙になります。撮影の条件を書くと映像になります。1本目に足りなかったのはここでした。2本目以降は、被写体の記述と同じ分量だけカメラワーク・レンズ・ライティングを書いています。
| 要素 | 使った語 | 効果 |
|---|---|---|
| カメラワーク | slow dramatic dolly-in(ゆっくり寄る) | 10秒の中に起承転結が生まれる |
| 光 | volumetric god rays(体積光) | 空気が可視化され奥行きが出る |
| 光 | anamorphic lens flares | 横に伸びる映画的なフレア |
| レンズ | 35mm anamorphic lens | 被写界深度と歪みが映画寄りになる |
| 質感 | subtle film grain | デジタル臭さが抜ける |
| 色 | deep navy and electric cyan color grade | カラーグレーディングとして解釈される |
これらは映像制作の現場語です。「かっこよく」ではなく「どう撮るか」を書いている点が本質で、AIに解釈の余地を残しません。
2. 動作は1つに絞る
これが最も効きました。失敗したダンス動画では、振付を3つ並べています。
Fluid hip-hop choreography: sharp isolations, smooth body waves, a controlled spin, full body kept in frame.
アイソレーション、ボディウェーブ、回転の3つです。結果はどれも実行されず、その場での体重移動と、8秒目に一度後ろを向いただけで終わりました。3つ指定して3つとも消えたことになります。
成功したほうは1つだけ書いています。
One simple continuous action: she raises both arms above her head and spins around once, smiling brightly.
One simple continuous action(ひとつの単純な連続動作)と宣言してから、腕を上げて一回転する、とだけ書きました。これで最後まで踊りきります。振付を盛るほど密度が上がるのではなく、盛るほど何も起きなくなるという逆の関係になっています。
3. 被写体を動かしたいときはカメラを止める
失敗した1本目のダンスでは handheld camera slowly orbiting around her(手持ちカメラが周回する)と書いていました。成功した2本目では camera locked off on a tripod, completely static, no camera movement at all(三脚固定・完全に静止)に変えています。
カメラが動いていると、被写体が静止していても画面は変化し続けます。つまりカメラの動きが被写体の動きの代役を果たしてしまう状態です。カメラを止めると、画面に変化を作れるのは被写体の動きだけになるので、動かさざるを得なくなります。人物や動物を動かしたいときは、カメラを止めるほうが結果的に動きます。
フレーム単位で見た、失敗と成功の差
印象論にならないよう、2本を同じ方法で分解しました。失敗したほうを1秒刻みで追うと、10秒間の中身はこうなっています。
| 秒 | 1本目(失敗) | 2本目(成功) |
|---|---|---|
| 0〜1.5秒 | その場で軽い体重移動 | 立って微笑む(助走) |
| 2〜2.5秒 | ほぼ変化なし | 両腕を左右に開く |
| 3〜4秒 | ほぼ変化なし | 両腕を頭上へ上げる |
| 4.5〜6.5秒 | 静止 | 回転。髪が水平に流れスカートが広がる |
| 7〜8.5秒 | 後ろを向く | 回転を終えて腕を下ろす |
| 9〜9.5秒 | 正面に戻り脚を開く | 正面に戻り笑顔で締め |
成功したほうは、回転中に髪が遠心力で水平まで流れ、スカートが広がり、6.5秒以降にゆっくり戻ります。物理的な破綻がありません。裸足の足の運びも自然でした。
音声にも差が出ました。成功したほうは0秒が-55.1dBとほぼ無音で、動きのピークである4秒で-16.4dBまで上がり、8秒で-23.6dBに落ちます。動きの山と音の山が一致しており、後付けのBGMではなく映像と一緒に設計されていることが分かります。
題材によって、指示の通りやすさが違う
6本を題材別に並べると、はっきりした傾向が出ました。
| 題材 | 指示の再現度 | 備考 |
|---|---|---|
| 大自然の風景 | 高い | 破綻を検知される対象がない |
| 抽象CG・UI | 高い | 指定した英単語まで描けた |
| アニメ調の人物 | 高い | 表情・口の開閉まで反映 |
| 実写の動物 | 中〜高 | 二足歩行と発話が成立 |
| 実写の人物(動作あり) | 条件つき | 動作を1つに絞れば成立する |
風景が最も安定するのは、崩れたと判定できる対象が画面にないからです。人間の関節、手の指、文字のように「少しの狂いが致命的になる要素」が一切ありません。次の動画は10秒間、尾根を越えて谷が開けていくドローンショットが一貫して成立しています。
逆に実写の人物が最も難しいのは、見る側が破綻に気づきやすいためです。関節の角度や重心が少しでも狂うと不自然に見えるので、モデルは安全な方向、つまり動かさない方向に倒れます。1本目のダンスで動きが消えたのはこれが理由だと考えられます。
一方でアニメ調は、元々デフォルメされている分だけ許容範囲が広く、大きな動きや表情変化を出しても成立します。次の動画では、指定した「高音で目を閉じる」がそのまま反映されました。
この動画は音量と口の開き方を突き合わせると対応が見えます。0〜1秒が-19.9dBで口は閉じ気味、9〜10秒が-14.4dBで大きく開いて目を閉じる。音量が上がるほど口が大きく開くという関係になっていました。ただし厳密には音素レベルのリップシンクではなく、盛り上がりの一致にとどまります。
外れた予想①:AI動画は文字を描けない
検証中に予想を2つ外しました。記録として残しておきます。
1つ目は文字です。AI動画は文字が苦手というのは広く知られた弱点で、実際に別の動画では判読できないダミー文字が出ていました。そこでロゴやタグラインは後からAfter Effects等で重ねるのが現実解だと結論づけたのですが、これは誤りでした。
次のプロンプトで、指定した綴りどおりの文字が出ました。
Final 3 seconds: every panel dissolves into drifting particles and the screen falls into darkness, then one single word appears centered on screen, spelled D-I-R-E-B-A-S-E, reading DIREBASE, in clean bold uppercase sans-serif letters glowing electric cyan. No other text or letters anywhere in the frame.
効いたと考えられるのは2点です。ひとつは1文字ずつハイフンで区切って綴りを示したこと(spelled D-I-R-E-B-A-S-E)。もうひとつは他の文字を出すなと明示したこと(No other text or letters anywhere in the frame)です。画面内の文字要素を1つに限定したことで、モデルがそこに集中できたと解釈できます。
なお、この検証では判定を一度間違えています。ブラウザ上で動画の再生位置を書き換えて静止画を確認したところ、8.9秒・9.5秒・10.0秒のいずれにも文字が見えなかったため「失敗」と判断しました。あとでffmpegでファイルから直接抜き出したところ、8.2秒から10.08秒まで約1.9秒にわたって表示されていました。ブラウザのシーク指定が実際の表示フレームに反映されておらず、前のフレームを撮っていたのが原因です。動画の検証は、ブラウザ越しではなくファイルから直接行うのが確実です。
外れた予想②:日本語の発話は成立しない
2つ目は音声です。英語中心のモデルが多いことから、日本語のセリフを指定しても「日本語らしい音」にしかならないだろうと予想しました。これも外れました。
英語のプロンプトの中に、日本語のセリフをそのまま鉤括弧で埋め込みました。あわせて声質も「3〜5歳くらいの幼い子供の声」と指定しています。
Then the Shiba Inu turns to the camera and speaks in Japanese with the voice of a small child about three to five years old, a high-pitched sweet toddler voice, slightly hesitant and endearing as if still learning to talk, saying 「こんにちは、今日も元気だね」, its mouth moving in sync with the Japanese words.
音量を1秒ごとに測ると、構造がはっきり出ます。
| 区間 | 平均音量 | 内容 |
|---|---|---|
| 0〜7秒 | -27.3 〜 -25.1 dB | 環境音・BGMの水準 |
| 7〜8秒 | -12.4 dB | 約13dB上昇=発話の立ち上がり |
| 8〜10秒 | -13.6 〜 -15.6 dB | 発話が継続 |
同じ7秒付近から、柴犬の口が閉じ→開き→閉じ→開きと0.2秒刻みで細かく動き始めます。音の立ち上がりと口の動きのタイミングが一致していました。実際に再生して確認したところ、日本語としても聞き取れる発話になっています。
この2つの予想外しから引き出せる教訓は単純です。できないと決めつける前に、一度試したほうが早い。文字も日本語音声も、一般に「AI動画の弱点」とされている領域でしたが、指示の書き方次第で通りました。
Web制作の実務で使えるところ、使えないところ
制作の現場に持ち込めるかどうかで整理します。
| 用途 | 可否 | 理由 |
|---|---|---|
| ヒーローセクションの背景ループ | 使える | 10秒の1ショットで足りる |
| SNS用の縦動画 | 使える | 9:16でそのまま書き出せる |
| 提案時のイメージ共有 | 使える | 数分で作れるので前提のすり合わせが速い |
| カット割りのある映像 | 難しい | 1本=1ショット。繋ぐ工程が別途必要 |
| ロゴを正確に出す | 条件つき | 綴りは通ったが毎回保証はされない |
| 実在の人物・製品の再現 | 不可 | 指定した人物を出す仕組みではない |
最大の制約は1本が1ショットで完結することです。カット割りのある映像を作りたいなら、複数本を生成して編集ソフトで繋ぐ前提になります。繋ぐ工程に何が要るかは After Effects導入前チェック で整理しています。「プロンプト1回でCMができる」ものではありません。
サイトに載せるときの容量対策
生成した動画をそのままサイトに置くと重すぎます。この記事の6本も、元は合計33.7MBありました。次の設定で再エンコードすると合計7.8MB(約77%削減)になり、目視での劣化は分かりませんでした。
ffmpeg -i input.mp4 \
-c:v libx264 -crf 28 -preset slow \
-c:a copy \
-movflags +faststart \
output.mp4-movflags +faststart は必須です。メタデータをファイル先頭へ移すため、全体をダウンロードし終わる前に再生が始まります。-c:a copy は音声を再エンコードせずそのまま通す指定で、音質を落とさずに済みます。
圧縮しても、6本を直接埋め込めばページは重いままです。この記事ではサムネイル画像を置いておき、クリックされたときに初めて動画要素へ差し替える方式にしました。記事を開いた時点で読み込むのはWebP画像だけで、合計268KBに収まります。動画の転送は再生された分だけ発生します。
// クリックされたサムネイルだけを video 要素に置き換える
document.addEventListener('click', function (e) {
var box = e.target.closest('.cq-video');
if (!box || box.dataset.cqPlayed) return;
var v = document.createElement('video');
v.src = box.dataset.src;
v.controls = true;
v.autoplay = true;
v.loop = true;
v.muted = true; // 不意に音が出ないよう初期はミュート
v.playsInline = true;
box.dataset.cqPlayed = '1';
box.replaceChildren(v);
v.play();
});この方式には副次的な利点があります。クリックがユーザー操作にあたるため、ブラウザの自動再生制限に引っかかりません。そのうえでこの記事は、不意に音が出ないよう初期状態をミュートにし、聞きたい人がプレーヤーの音量アイコンで解除できるようにしています。MDN Web Docs「メディアと Web Audio API の自動再生ガイド」も、音声を伴うメディアの自動再生はユーザー操作が起点でない限り原則としてブロックされると説明しています。サムネイル画像に alt を書けるので、動画要素だけでは持てない説明情報も持たせられます。
生成にかかる時間とクレジット
実測した消費量です。
| 条件 | 消費クレジット | 生成時間 |
|---|---|---|
| 5秒 / 720P | 100 | 約2分 |
| 10秒 / 720P | 200 | 約3分 |
画面上の表示は「平均待機時間 4分」でしたが、実際は10秒尺で3分前後で終わりました。1080P以上は生成後に別途アップスケールする形で、追加のクレジットがかかります。
ここで意識しておきたいのは、失敗した1本も同じだけ消費することです。1本目のダサい壁紙にも100クレジット、動きが出なかったダンスにも200クレジットかかっています。指示の精度がそのままコストに直結するので、書き方を先に固めてから量を出すほうが結果的に安く済みます。
まとめ
AI動画生成で結果を分けるのは、ツールの選択より指示の書き方です。6本の検証から出た再現可能な条件は3つでした。カメラ・レンズ・光を必ず書くこと。動作は1つに絞ること。被写体を動かしたいときはカメラを止めること。この3つを守るだけで、同じツールでも出力は別物になります。
次に試すなら、手元で1本作ってffmpegにかけてみることをおすすめします。0.5秒刻みのコンタクトシートを1枚作れば、「なんとなく良い」で終わっていた評価が「3秒目で指示した動作が消えている」まで具体化します。そこまで分かれば、次に直すべき一文が決まります。写真を起点にする方式や各サービスの無料枠については 生成AIで写真から動画を作る で扱っているので、入力方式ごと変えたい場合はそちらを参照してください。
よくある質問
Q. プロンプトは日本語と英語のどちらがよいですか?
英語を推奨します。日本語でも通りますが、dolly-in や god rays のような映像制作の専門語は日本語に置き換えると精度が落ちます。実際に日本語で「ミニマル」「控えめ」と書いた1本目は平凡な壁紙になり、英語で撮影条件を書いた2本目以降は映画的な仕上がりになりました。ただし英語のプロンプトの中に日本語のセリフを埋め込むことは可能で、その場合は日本語として発話されます。
Q. 指示した動きが出ないときはどうすればよいですか?
まず動作の指定を1つに減らしてください。複数の振付を並べると、そのどれもが実行されなくなる傾向があります。あわせてカメラを固定に変えます。カメラが動いていると画面の変化がカメラ側で足りてしまい、被写体が動かなくなるためです。この2点を変えただけで、まったく踊らなかった動画が回転を完走しました。
Q. 動画の中に文字やロゴを出せますか?
出せる場合があります。今回は英大文字8文字を1文字ずつハイフンで区切って綴りを示し(spelled D-I-R-E-B-A-S-E)、あわせて他の文字を出さないよう明示したところ、正確な綴りで表示されました。ただし毎回保証される挙動ではないため、確実性が要る場面では動画編集ソフトで後から重ねるほうが安全です。
Q. どんな題材が得意ですか?
風景がもっとも安定します。人間の関節や指、文字のように「少しの狂いが致命的になる要素」が画面にないためです。次いで抽象的なCG、アニメ調の人物が続きます。もっとも難しいのは動作を伴う実写の人物ですが、これも動作を1つに絞りカメラを固定すれば成立します。
Q. 生成した動画をWebサイトに載せると重くなりませんか?
そのまま置くと重くなります。libx264 の CRF 28 で再エンコードすると、目視での劣化なく7割前後まで削減できます。さらにサムネイル画像を先に表示し、クリックされたときに動画要素へ差し替える方式にすれば、ページを開いた時点の転送量は画像ぶんだけに抑えられます。-movflags +faststart を付けておくと再生開始も速くなります。
Q. カット割りのある映像も作れますか?
1回の生成で作れるのは1ショットだけです。カットが切り替わる映像にしたい場合は、複数本を生成して編集ソフトで繋ぐ前提になります。プロンプトの中で「前半は◯◯、後半は△△」と時間を区切って指示することはでき、今回もロゴの出現タイミングはその方法で制御できましたが、明確なカット転換にはなりません。
