この投稿は「PY - PARTY TECH STUDIO Advent Calendar 2025」の6日目の投稿です。私が所属するTech Studio PYのメンバーが様々な角度から技術記事を投稿していますので、他の投稿も合わせてお楽しみください。
https://qiita.com/advent-calendar/2025/p-y
制作現場とプロデューサーのためのFFmpeg活用術
— CLIが使えれば、現場の時間はもっと取り戻せる(かも) —
はじめに — 現場の“時間”を取り戻すためのツールとしてのFFmpeg
映像制作・インタラクティブなWebコンテンツ・SNS動画……
今の現場はとにかく「量」が求められます。
Webサイトでの生成時間を短縮したいし、サーバーサイドでのインフラコスト圧縮したいから事前にパターン分のベース動画レンダリングして用意しようってあるあるですよね?
PremiereやAfter Effectsでタイムラインを増やし続けていると、
気づけば 深夜・マシンの発熱・レンダリング入ると何もできない…。
もしかしたらエディターさんが血の涙を流しているかもしれない。
(そんな光景が目に浮かんだみなさんには届いてほしい)
そんなとき、僕らのような プロデューサー/PM/映像P が
“自分の手元でワークフローを最適化できる武器”が FFmpeg です。
コマンドラインに抵抗があっても大丈夫。
この記事では、現場で本当に役立つ 実戦的FFmpeg をまとめてみました。
脳死レベルで、こういう処理をしたいんでコマンドをお願いしますと生成AIにたずねれば
サッと出てくるはずではありますが、誰かの役に立てばということでいくつかの案件で使ったコマンドなどを紹介します。
A. 現場ですぐ使えるFFmpeg基本コマンド & よくある落とし穴
FFmpegは、たった一行で「10分かかる作業を1秒にする力」を持っています。
ここでは まず覚えておくべき基本コマンド と
現場でよく起きる事故の理由と対策 をまとめます。
MXF(log) → MP4(レビュー用)
ffmpeg -i input.mxf -c:v libx264 -preset slow -b:v 12M \
-c:a aac -b:a 192k output.mp4
ProRes変換(編集用)
ffmpeg -i input.mov -c:v prores_ks -profile:v 3 \
-pix_fmt yuv422p10le output_prores.mov
音声削除・抽出
# 音声削除
ffmpeg -i input.mp4 -an output_mute.mp4
# 音声抽出
ffmpeg -i input.mp4 -vn -acodec copy audio.aac
トリミング
ffmpeg -i input.mp4 -ss 00:00:10 -to 00:00:20 -c copy out.mp4
よくあるトラブル
現象 原因 対策
音ズレ fpsの暗黙変換 fps固定・事前計算
透過消失 profile誤り yuva444p10le
サンプルのコードは
ファイルパスをめっちゃ簡単にしてますが、例えば外付けのSSDの名前に空白が入ってたりすると
コマンド通らなくて詰むので気をつけてください。
さあ、ここもchatGPTさんに補足してもらいます。
補足:ファイルパスにスペースがあるときの扱い方(外付けSSD編)
FFmpegやBashでよくあるエラー原因のひとつが
「ファイルパスにスペースが含まれている」 ケースです。
たとえば、外付けSSDの名前が以下のような場合:
/Volumes/Extreme Pro/VideoSources/input.mov
このまま書くと、
Bashは Extreme と Pro を別の引数として解釈してしまい、
ファイルが見つからないエラーになります。
1. 必ずダブルクォーテーションで囲む(最重要)
ffmpeg -i "/Volumes/Extreme Pro/VideoSources/input.mov" output.mp4
原則:
• パスは必ず " で囲む
• 変数を使う場合も同様
INPUT="/Volumes/Extreme Pro/VideoSources/input.mov"
ffmpeg -i "$INPUT" output.mp4
2. エスケープ(\)を使う方法(非推奨だが知識として)
ffmpeg -i /Volumes/Extreme\ Pro/VideoSources/input.mov output.mp4
• スペースの前に \ を入れる方法
• 読みにくく、スクリプトでは事故りやすい
→ 実務ではクォート推奨
3. 外付けSSDを使った一括変換の実例
変換元:外付けSSD「Extreme Pro」
/Volumes/Extreme Pro/VideoSources/
変換先:同SSD内の出力フォルダ
/Volumes/Extreme Pro/Converted/
#!/bin/bash
SRC="/Volumes/Extreme Pro/VideoSources"
DST="/Volumes/Extreme Pro/Converted"
mkdir -p "$DST"
for f in "$SRC"/*.mov; do
base=$(basename "$f" .mov)
ffmpeg -i "$f" \
-c:v libx264 -preset slow -b:v 12M \
"$DST/${base}.mp4"
done
ポイント
• パスは必ず変数に入れて "${変数}" で使う
• basename を使うとファイル名処理が安全
• 外付けSSDでも安定して動作する
4. ドラッグ&ドロップでパスを取得する(Mac小技)
Macのターミナルでは:
1. ターミナルに ffmpeg -i まで入力
2. Finderから動画ファイルをドラッグ&ドロップ
すると自動的に:
"/Volumes/Extreme Pro/VideoSources/input.mov"
という 正しいクォート付きパス が入力されます。
CLIに慣れていない人ほど、
この方法から入るのがおすすめです。
なぜこの記事でここまで書くのか
• FFmpeg自体は正しい
• コマンドも合っている
• でも パスのせいで失敗して挫折する
このケースが本当に多い。(自分もここで時間を溶かした…w)
「FFmpegは難しい」の正体はツールではなく、OSとシェルのルールだったりします。
ここを一度越えると、CLIへの心理的ハードルは一気に下がると思います。
B. タイムコードとフレーム数の同期(ズレ防止)
編集はフレーム、FFmpegは秒。この差が 1フレームの事故 を生みます。
そう、あれなんかズレてねってなってやり直したことが多々ありました。
なので、ここも注意しましょう。
1. タイムコード → 総フレーム数
total_frames = ((hh * 3600) + (mm * 60) + ss) * fps + ff
2. フレーム数 → 秒
seconds = frames / fps
3. 例(24fps / 20:35:02:10)
• 秒:74102
• フレーム:10 / 24 = 0.4167
• 合計:74102.4167秒
ffmpeg -i input.mp4 -ss 74102.4167 -c copy out.mp4
4. fps換算チート表
fps 1フレーム
24 0.0417秒
30 0.0333秒
60 0.0167秒
5. 23.976 / 29.97fps 注意
• 23.976 = 24000/1001
• 長尺ほどズレが蓄積する
C. バッチ処理テンプレ(Mac Bash / Windows対応)
大量の素材を一気に処理するのは圧倒的に早いです。
撮影素材まるっと変換もサクッといけますよ。
1. フォルダ内一括変換
for f in ./*.mov; do
ffmpeg -i "$f" -c:v libx264 -b:v 12M "${f%.mov}.mp4"
done
2. 音声なし一括
for f in ./*.mp4; do
ffmpeg -i "$f" -an "${f%.mp4}_mute.mp4"
done
3. 共通イン点アウト点
IN="00:00:05"
OUT="00:00:12"
for f in ./*.mp4; do
ffmpeg -i "$f" -ss $IN -to $OUT -c copy "${f%.mp4}_cut.mp4"
done
D. S-Log素材を編集しやすくするProRes変換
とある案件で大量の4k撮影素材がありました。
その素材をどう処理していったか。
*slog→mp4 (h264) カット選定用にビットレートを下げる
*カット選定と使用タイムコードを整理
*slog→mov(prores) エディット用に指定のタイムコードを抽出して、prores変換
*PremiereでEDIT mp4でレンダリング
*slog→slogで指定タイムコードで切り出し、カラコレ用に素材を再整理
*カラコレした素材と差し替え対応
*ffmpegでwebmに変換して、サイトにあげてチェック
*最終的にはmp4を実装に渡して、ビルド時に最終素材を生成してもらった
この辺はチェック用につかった変換コマンドです。
logそのままだとチェック用に色が暗いのでLUTを当てて簡易的に補正をしてます
1. 編集用ProRes
ffmpeg -i slog3.mp4 \
-c:v prores_ks -profile:v 3 -pix_fmt yuv422p10le \
-c:a pcm_s16le edit.mov
2. 709プレビュー
ffmpeg -i slog3.mp4 \
-vf "lut3d=file=sony_slog3_sgamut3cine_to_rec709.cube" \
-c:v prores_ks preview.mov
F. After Effectsスクリプト量産とFFmpegの使い分け
• アニメーション構造変更 → After Effects
• テキスト/ロゴ差替/ 音声合成 など定型量産 → FFmpeg
とある案件では、ジェネレーター用に大量の素材を生成しました。
例えば、
9の選択肢による可変アニメーションと6つのBGMタイプ違いの組み合わせ
9*6*2=108タイプ
さらに、生成前/生成後のバリエーションが必要
108*2=216タイプ
また、アニメーションのベースができた後にナレーションをVコン指定の秒数に合成するのも
FFmpegで一括対応しました。
71*2 タイプ
アニメーションのバリエーション違いの素材量産
ムービー内で使われるタイムラインの位置によって、
同じ内容のイベントでも使用するアニメーションテンプレが違うもの
71*4*2 =568タイプ
ユーザーの生まれ年の選択に応じてセレクトされるイベントが異なるもの
155*2=310
合計すると約900タイプ
これは、エディターさんにAEのスクリプトで対応してもらいました。
アニメーション内部(テンプレ)をいじるならAE、
定型の量産だけならFFmpegがベター。
この“住み分け”を理解して、両者をうまくつかい分けることで、量産は劇的に速くなると思います。
習熟度にもよりますが。
最後に
本記事では、実案件での活用も踏まえてFFmpegの使い方を紹介してみました。
エンジニアのみなさんには当たり前かもしれないですが、
映像制作の現場でも活用できることが伝われば幸いです。CLI怖くないよ。
FFmpegは単なるツールではなく、制作現場の時間を取り戻すための強い味方だと思います!
みなさんも、ぜひFFmpegをつかってみてください。