← knym.net

家族旅行の動画39本を外に出さずに2分へ。ffmpeg+Remotionでローカル自動編集

·9 min read
ffmpegRemotionClaude Code動画編集AI活用

久しぶりの家族の長距離移動旅行。 vlogのAI自動編集をしてみたくて、iPhoneで縦動画を4泊5日の旅行で39本撮影で合計4分ちょっと。Claude Codeに、ローカルで完結する自動編集パイプラインを作ってもらった。

今回のポイント

最初の1行

書いたのはこれだけ。

家族旅行で撮影した動画をAIで自動編集したい

編集方針もツールも指定していない。ここからClaude Codeが環境を調べて、「クラウドに上げずにffmpegだけで完結させる」という方式を出してきた。家族の動画を外部サービスに投げたくないという話は、こちらからは一度もしていない。

以降も、投げた指示はどれもこの長さだった。順に見ていく。

共有アルバムから読めるか聞いたら、読めなかった

iPhoneからMacに動画を移すのが面倒だったので、共有アルバムを直接読めないか聞いた。

photos の shared albumからデータ参照できるか

答えはNo。写真アプリのライブラリはmacOSのTCC保護でターミナルから読めず(Operation not permitted)、共有アルバムも同じ理由でブロックされる。しかも共有アルバムの動画はiCloud側で最大720pに圧縮されている、というおまけ付きだった。画質の面でもどのみち使えない。

結局AirDropでMacに送った。素材を渡すのは、フォルダを @ で指すだけでいい。

@"(動画を入れたフォルダ)"
ここに動画入れた

選抜は全部おまかせ

ここから先は、ほぼ何も指示していない。作られたのは、こういう処理をするPythonスクリプトだった。

python3 autoedit.py --target 120 を実行すると、約4分の素材から2分13秒のハイライトが出てくる。ここまでがv1。

「Remotion使える?」で演出版ができた

切り貼りだけだと味気ない。動画をReactで作れるRemotionが使えないか聞いてみた。

Remotion使える?

Remotionは公式がAgent Skillsを配布している。これを入れると、Claude CodeがRemotionの流儀(composition・Sequence・トランジション)を分かった状態でコードを書いてくれる。

npx skills add remotion-dev/skills

素材はv1の出力をそのまま流用して、こういう構成になった。

Remotion Studio の編集画面。上部にプレビュー、下部にタイムラインが並び、TransitionSeries の下に title シーケンスと各クリップの AbsoluteFill がツリー状に展開されている。再生ヘッドは6秒地点、全体尺は2分強

npx remotion studio で開くとこの画面になる。左のツリーがそのままReactコンポーネントの構造で、TransitionSeries の下にタイトルカードとクリップが並ぶ。フレーム単位で再生位置を動かしながら確認できるので、テロップの出るタイミングがずれていてもすぐ分かる。

旅程メモは、渡しただけ

テロップの文言を1枚ずつ考えるのが面倒だったので、旅行前に作っていた旅程のmarkdownを渡した。投げたのはこれだけで、指示文は1文字も書いていない。

@"(旅程メモ.md)"

日付ごとの見出しの下に、時間と行動を並べた表があるだけのメモだ。これを読んで、Day 1〜5の流れをそのままテロップにする案が返ってきた。カードの見出しとサブテキストが起こされ、各クリップの撮影日時から「この動画はDay 3」と自動で割り当てられる。日付ごとの対応を人が指定する必要はなかった。

ついでに警告も返ってきた。このメモの冒頭に予約サイトのログイン情報が平文で書いてある、コードにも動画にも使わないがメモの管理には注意を、と。言われて初めて気づいた。

そもそもこういう私的なメモを丸ごと渡せるのは、処理がローカルで完結しているからだ。クラウドの編集サービスなら、テロップ用に中身を抜き出して貼る作業が要る。この気楽さが一番ありがたかった。

調整も1行

作り直しではなく差分で頼める。

ハイライトを3分にして
 
YouTube用に横(1920x1080)でも書き出して
 
Day 3のテロップを「移動日」に変えて、再レンダリングして
 
BGMを差し替えて、音量を少し下げて

まとめ