MAGAZINE
ルーターマガジン
LLMに解釈してもらうだけなら動画はもっと荒くていい
はじめに
近年のLLMはマルチモーダルで動画などを読み込むことができます。
ところが、動画は容量が大きいため取り回しが悪く、場合によってはLLMに送信できる容量制限に引っかかってしまう場合があります。
そこで本稿では、動画の解像度やビットレートを適切に調整し、LLMに効率よく読み込ませるための軽量化コマンドを紹介します。このコマンドを活用することで、送信制限を回避しつつ、精度の高い解析が可能になります。
FFmpegで動画を処理する
FFmpegについて
FFmpegとは、「人間や機械が作成したほぼすべてのものをデコード、エンコード、 トランスコード、多重化、逆多重化、ストリーミング、フィルタリング、再生できる、業界をリードする マルチメディアフレームワーク」です。(https://www.ffmpeg.org/about.html より引用、翻訳)
その中のffmpegというコマンドラインツールを用いることで、動画などのメディアを再エンコードできます。
ffmpegの使い方
ffmpegにおける基本的なコマンドは次の通りです。
ffmpeg -i input.avi output.mp4
input.avi、output.mp4はそれぞれ利用したい拡張子に書き換えて使用できます。何もオプションを付けなければ、ffmpegの標準設定で再エンコードされます。逆に、オプションによって再エンコードの設定を細かく指定できるため、これにより動画を軽量化することができます。
より具体的な使い方についてはffmpegのドキュメントなどが参考になります。
効果的なコマンド
LLMに効率よく動画を送信するにあたって、効果的なffmpegのコマンドを紹介します。
ffmpeg -i input.mp4 -r 5 -vf scale=-2:480 -c:v libx264 -crf 51 -ac 1 -b:a 8k -ar 16000 output.mp4
上記のコマンドで、1分間のmp4の動画を10.2MBから0.196MBまで、2%以下に軽量化することができました。また、その時の処理時間は3.41秒でした。
加工後の動画をGeminiにアップロードしてシナリオ解説してもらったところ、以下のように動画の内容を読み取ることができました。
オリジナル動画: Google Gemini: Mr. Fuzzy’s Big Adventure
使用モデル:Gemini 3.5 Flush
- 入力
この動画のシナリオを解説してください。
全ての場面について,映像と音声両方の内容を詳細に書き下してください。
(加工済み動画を添付)
- 出力
ご提示いただいた動画のシナリオ解説を、映像と音声の両面から時系列に沿って詳細に書き下します。
この動画は、飛行機にひつじのぬいぐるみを置き忘れてしまった子供(エマ)のために、親がGoogle Geminiを活用してユニークな解決策を見つけるストーリーとなっています。
動画シナリオ詳細解説
00:00 - 00:07 | 置き忘れたぬいぐるみの検索
映像: 黒い画面に「Ask Google Gemini」という検索窓が表示されています。左上にはGeminiのロゴが輝いています。検索窓に、女の子がひつじのぬいぐるみを抱きしめている写真が添付され、「find this stuff」(これを見つけて)というテキストが入力されます。その後、テキストが「al to buy ASAP」(できるだけ早く購入する)へと打ち直されます。
音声: 軽快でアップテンポなBGMが流れます。女性の「So you left Mr. Fuzzy on the plane?」(じゃあ、ミスター・ファジーを飛行機に置いてきちゃったの?)という声に対し、男性が「Well, I think we all left Mr. Fuzzy on the plane.」(あー、僕たちみんなで置き忘れてきちゃったんだと思うよ)と少し申し訳なさそうに答えます。
00:07 - 00:13 | 商品の特定と売り切れ
映像: 検索窓の横で「Identifying plushie...」(ぬいぐるみを特定中...)、「Show thinking」(思考プロセスを表示)と表示された後、「This is almost certainly a Lovable Lamb.」(これはほぼ間違いなく「ラバブル・ラム」です)という結果と、購入できるショップのリンクが表示されます。画面が切り替わり「KIM'S SNUGGLE CO.」というECサイトが表示されますが、該当のひつじのぬいぐるみの下には赤字で「BACKORDER - 2 WEEKS」(入荷待ち - 2週間)と書かれています。価格は33ドルです。
音声: 軽快なBGMが続く中、女性が残念そうに「Ah, of course.」(あぁ、やっぱりね)とため息をつきます。
00:13 - 00:20 | 新たなアイデア(飛行機に乗るひつじ)
映像: 再びGeminiの入力画面に戻ります。男性が次のアイデアを思いつき、「make a photo of the lamb on his next flight」(次のフライトに乗っているひつじの写真を生成して)と入力します。生成された画像には、飛行機の座席にちょこんと座り、窓の外を眺めるひつじのぬいぐるみの姿が映し出されます。
音声: 男性が「Uh... okay, wait a second. I think I got it. Hear me out. Maybe, he isn't really lost.」(あ…ちょっと待って。いいこと思いついた。聞いて。もしかしたら、彼は本当に迷子になったわけじゃないのかも)と提案します。女性は不思議そうに「What?」(どういうこと?)と聞き返します。
00:20 - 00:28 | 世界を旅するひつじ(画像生成)
映像: 男性のアイデアを受け、Geminiの検索窓に次々と指示が入力され、画像が生成されていきます。
「the Grand Canyon」: グランドキャニオンの絶壁に立ち、双眼鏡を首から下げて黄色いジャケットを着たひつじの画像。
「put the lamb on the camel」: エジプトのピラミッドを背景に、ラクダの背中に乗ってサファリハットをかぶったひつじの画像。
「b family reunion」: 牧場の納屋の前で、たくさんのひつじの仲間に囲まれて自撮り風に写るひつじの画像。
音声: 男性が「Maybe he's just... sightseeing.」(ただ、観光してるだけかも)と言うと、女性は写真を見て「Look at him! Oh, yes!」(見て彼を!あぁ、いいわね!)と興奮気味に賛同します。男性が「Maybe he went to visit some family.」(家族に会いに行ったのかもしれないし)と続けると、女性も「This is good.」(これ、すごくいいわ)とノリノリになります。
00:28 - 00:36 | 冒険に出るひつじ(動画生成)
映像: 指示がテキストから「Video」モードに切り替わり、「b snowboarding」(スノーボードをするひつじ)と入力されます。画面に「Your video is ready!」(動画が完成しました!)と表示され、以下の躍動感あふれるショート動画が次々と再生されます。
雪山を華麗にスノーボードで滑り降りるひつじ。
激しい川でラフティング(ボート下り)を楽しむひつじ。
大空からスカイダイビングをするひつじ。
スペインの牛追い祭りのように、迫り来る雄牛の前を必死に走るひつじ。
音声: 女性が「Okay, I got it. What if he took off on some adventure?」(よし、わかった。彼が何か大冒険に出たとしたらどう?)と言い、動画に合わせてスノーボードの滑走音や、ラフティングの水しぶきの音、スカイダイビングの風の音、雄牛の鳴き声と少年の叫び声が流れます。それを見た男性は少しやりすぎだと感じたのか、「Wait a second. Hold on, hold on. Too far.」(ちょっと待って。ストップ、ストップ。やりすぎだよ)と止めに入ります。
00:36 - 00:43 | リラックスするひつじ(動画生成)
映像: テキストが「b in a tranquil p」(穏やかな場所でのひつじ)に打ち替えられます。生成された動画では、夕暮れの美しい丘の上で、多くのひつじたちがヨガのポーズをとって瞑想しています。続いて、豪華なスパのジャグジーで、おもちゃのあひる達と一緒に温泉に浸かってリラックスしているひつじの動画が流れます。
音声: 女性が「Yeah, maybe he just... needed some "me time".」(そうね、彼にはただ「自分の時間」が必要だったのかも)と言い、ヨガのシーンでは穏やかな音楽が流れます。男性が「Or, a hot tub.」(あるいはジャグジーとかね)と冗談交じりに言うと、女性も笑い声をあげます。
00:43 - 00:55 | エマへのメッセージ(動画生成と完成)
映像: 検索窓に「m... y on the moon」(月面にいるミスター・ファジー)と入力され、「Generating video...」(動画を生成中)というローディングが入ります。完成した動画には、月面に降り立った宇宙服姿のひつじが映し出され、背景には美しい地球と宇宙船が見えます。ひつじはカメラに向かって手を振っています。
音声: 女性が「So, he's gonna be near for a while?」(じゃあ、彼はしばらく近くにいないってことね?)と言うと、男性が「Oh, I've got an idea.」(あ、いいアイデアがある)と思いつきます。
生成された動画から、宇宙飛行士風に加工された男性の声(音声合成またはアフレコ)でメッセージが流れます。
「Hey Emma! Took a little trip. Really missing you. See you in, um... 7 to 10 business days.」
(やあエマ!ちょっと旅に出てるんだ。本当に会いたいよ。じゃあ、うーん……7から10営業日後に会おうね)
00:55 - 00:59 | エンディング
映像: 黒い画面に変わり、白い文字で「A new kind of help from Google」(Googleからの新しいサポートのかたち)と表示されます。その後、カラフルなGeminiのロゴと共に「Google Gemini」、その下に「Get Google's AI app」(GoogleのAIアプリを手に入れよう)というテキストが表示されて動画が終了します。
音声: 女性が嬉しそうに「Oh, she's gonna love it.」(あぁ、エマならこれ絶対に気に入るわ)と言います。最後に男性が「Hey Emma, come check this out.」(エマ、ちょっとこれ見てごらん)と娘を呼ぶ声が重なり、BGMが静かにフェードアウトします。
ぬいぐるみを無くしたというネガティブなハプニングを、Geminiの画像・動画生成機能を使って「ひつじのミスター・ファジーが世界や宇宙を大冒険旅行中である」という楽しいストーリーへと昇華させ、新しいぬいぐるみが届くまでの期間(7〜10営業日)を子供に楽しく待ってもらうための、心温まる活用事例を紹介したシナリオとなっています。
動画の長さや元々の画質等によって圧縮率と処理時間は変動しますが、ほとんどの場合で大幅な軽量化を見込めます。
オプションの具体的な値については、動画毎に最適な値は変わるので、次項を参考に適宜調整してください。
オプションの解説
-r
フレームレートを指定します。LLMに読み込ませる場合は1から5程度で十分な精度を得られることが多いと思います。
-vf scale=
動画をリサイズします。
-2:480
の部分について、右側の 480 は縦のピクセル数を指定します。
左側は正の数の時は横のピクセル数を指定し、-1や-2等の負の数の時は元の縦横比を維持するように自動的に横のピクセル数が決定されます。ここで -2 を指定することで、横側のピクセル数が偶数になるよう自動的に決定されます。横のピクセル数が奇数の場合エンコード時にエラーが発生することがあるためこのようにしています。
左側については -2 を選択すれば問題ないかと思います。
右側については、動画の細かさにあわせて調整します。例えば、動画内の文字が小さい場合は大きめに設定します。
-c:v
ビデオエンコード方法を指定します。一般的なのはlibx264です。
エンコード方法は圧縮率と処理時間がトレードオフの関係にあります。
今回の検証ではlibx265はlibx264と比べて容量が0.92倍でより軽量だったものの、処理時間が1.28倍で時間がかかったため、libx264を採用しました。
-crf
mp4に圧縮する際の「圧縮の強さ」です。0から51までの整数を設定でき、値が大きいほど圧縮が強く(より容量が小さく)なります。動きが激しい動画ほどノイズが発生しやすくなるので、動画の動きの激しさにあわせて調整してください。
サンプルコマンドの51は極端な設定なので、映像におけるLLMの読み取り精度が低い場合はこの値を小さくするのが効果的です。
標準は23です。(参考: https://trac.ffmpeg.org/wiki/Encode/H.264)
-ac
音声のチャンネル数を指定します。一般的なメディアは2(ステレオ)であることが多いですが、LLMに読み込ませる場合は基本的に1(モノラル)で問題ないです。
-b:a
オーディオのビットレートの設定です。音声の容量と音質の両方に直結します。
音声に関して、他のパラメータを調整してもこのパラメータも変更しないと容量は変わらないので注意してください。
サンプルコマンドの8kは極端な設定なので、音声におけるLLMの読み取り精度が低い場合はこの値を大きくするのが効果的です。また、サンプリング周波数の設定等によっては8kにできない場合があります。
モノラルの場合64kや48kが標準です。
-ar
音声のサンプリング周波数を変更します。標本化定理より、必要な帯域の2倍の値を設定します。言葉は8kHzまでの帯域で十分解釈可能なので、16000を設定しています。また、この設定のみでは容量は小さくならないため、あわせてビットレートも小さくしてください。
標準は48kHzや44.1kHzです。
まとめ
動画のエンコード設定を見直すことで、劇的に容量を削減することができます。
個人的に上記のコマンドを日常使いしてみたところ、50分間程度の長い動画も短時間で、容易にGeminiに送信することができてとても便利でした。
ファイル容量は小さいに越したことはないので、是非試してみてください。
またこのブログのアイキャッチ画像も、JPEGで作成していますが品質は10(通常は95)で保存しています。そのため元のPNG画像が1MBを超えるのに対して、この低品質JPEGであれば58KBと20分の1です。LLMにとっては情報量は変わらずストレージとトラフィックは大幅に節約できます。
CONTACT
お問い合わせ・ご依頼はこちらから