この記事でわかること
lut3dフィルタで 3D LUT ファイルをカラーグレーディングに適用するコマンド- 対応する LUT フォーマット(
.cube・.3dl・.dat・.m3d) - LUT の強度を調整する方法
- 実用的なカラーグレーディングのワークフロー
テスト済みバージョン: FFmpeg 6.1(検証スクリプトで実 FFmpeg 実行確認)
対象 OS: Windows / macOS / Linux
3D LUT とは
3D LUT(3-Dimensional Look-Up Table)は、入力カラー値(R,G,B)を別の出力カラー値に変換するためのテーブルです。プロの映像制作やYouTuberが使う「フィルムルック」「シネマ風」などのカラーグレーディングを、LUT ファイル一つで再現できます。LUTを使わず手動で色味を作る場合は、hue フィルタで色相・彩度を調整する方法から始めるとパラメータの感覚がつかめます。
基本コマンド
.cube LUT を適用する
ffmpeg -i input.mp4 -vf "lut3d=file=my_lut.cube" output.mp4
file= に LUT ファイルのパスを指定します。
パスにスペースが含まれる場合
ffmpeg -i input.mp4 -vf "lut3d=file='my lut file.cube'" output.mp4
スペースを含むパスはシングルクォートで囲みます。
対応フォーマット
| 拡張子 | フォーマット名 |
|---|---|
.cube | Adobe/DaVinci Resolve CUBE(最も一般的) |
.3dl | Autodesk 3DL |
.dat | Pandora dat |
.m3d | Pandora m3d |
最も汎用的な .cube フォーマットの使用を推奨します。
LUT の適用強度を弱める考え方
lut3d 単体には適用強度を直接指定するパラメータがありません。強すぎるLUTは、LUT適用後に eq やcurves フィルタでトーンカーブ補正する方法で彩度・コントラストを戻すか、別系統のフィルタグラフで元映像とブレンドする方法で調整します。
シンプルな強度調整は eq フィルタと組み合わせることで代用できます:
ffmpeg -i input.mp4 \
-vf "lut3d=file=my_lut.cube,eq=contrast=0.9:saturation=0.8" \
output.mp4
具体的な .cube ファイルの構造(参考)
# シンプルな 2x2x2 CUBE ファイル例(テスト用)
LUT_3D_SIZE 2
0.0 0.0 0.0
1.0 0.0 0.0
0.0 1.0 0.0
1.0 1.0 0.0
0.0 0.0 1.0
1.0 0.0 1.0
0.0 1.0 1.0
1.0 1.0 1.0
実際の高品質 LUT は 33×33×33(35,937 エントリ)や 65×65×65 などを使います。
テスト用の最小 .cube ファイルを作成して適用する
cat > test.cube << 'EOF'
LUT_3D_SIZE 2
0.0 0.0 0.0
1.0 0.0 0.0
0.0 1.0 0.0
1.0 1.0 0.0
0.0 0.0 1.0
1.0 0.0 1.0
0.0 1.0 1.0
1.0 1.0 1.0
EOF
ffmpeg -i input.mp4 -vf "lut3d=file=test.cube" output.mp4
haldclut フィルタを使った LUT 適用(別の方法)
haldclut は画像フォーマットの LUT(PNG/TIFF)を使用する別のアプローチです。
ffmpeg -i input.mp4 -i lut_image.png \
-filter_complex "[0][1]haldclut" \
output.mp4
カラーグレーディングのワークフロー
1. ログ映像からの変換(S-Log3 → Rec.709)
ffmpeg -i slog3_footage.mp4 \
-vf "lut3d=file=SLog3_To_Rec709.cube" \
output.mp4
ソニーのS-Log3などのログ映像には専用の変換LUTが必要です。
2. フィルムルックの適用
ffmpeg -i input.mp4 \
-vf "lut3d=file=film_look.cube" \
output.mp4
フリーのLUTはDeLUT、IWLTBAP、Emiliana Torriniなど多くのサイトで配布されています。
lut3d と curves・eq の組み合わせ
LUT 適用後にさらに微調整できます。
ffmpeg -i input.mp4 \
-vf "lut3d=file=my_lut.cube,eq=contrast=1.05:saturation=1.1" \
output.mp4
注意点
- LUT ファイルのパスは絶対パスを推奨します(相対パスは FFmpeg の実行ディレクトリ基準)。
lut3dフィルタは libavfilter に含まれており、外部ライブラリは不要です。- LUT ファイルの形式が正しくないとエラーになります(コメント行の記法など)。
- 高解像度映像への LUT 適用はリアルタイムより遅い場合があります。
実測例
1080p/30fps、2分の H.264 動画に33×33×33の .cube LUT を適用する例です。
ffmpeg -i input.mp4 \
-vf "lut3d=file=look.cube,eq=saturation=0.95:contrast=0.98" \
-c:v libx264 -crf 23 -preset medium -c:a copy \
output.mp4
lut3d は各ピクセルに対して3Dテーブル参照と補間を行うため、単純な eq より重くなります。8コア程度のデスクトップ環境では、処理時間は実時間の1.5〜3倍程度が目安です。
ファイルサイズはLUTの見た目に左右されます。フィルム風LUTで粒状感や暗部の色差が強くなると、同じCRFでもサイズが増えることがあります。逆に彩度や細部が落ちるLUTでは小さくなる場合もあります。環境により変動します。
LUT適用前後の比較では、人物の肌、白い壁、空のグラデーションを優先して確認します。強いLUTは一見きれいでも、肌色の転びやバンディングが出やすいです。まず10秒程度を書き出し、必要なら eq=saturation=0.9 のように後段で少し戻してから全体に適用します。
ログ撮影素材では、メーカー指定の変換LUTを先に当て、その後でルック用LUTを重ねる方が安定します。
関連フィルタ
関連リソース
よく使うオプション・フィルタ・コーデック設定をまとめた PDF チートシートです。手元に置いておくと調べる時間を短縮できます。