返回 2026-06-27
🛠 工具 / 开源

使用 ffmpeg 快速应用 LUT(色彩调级)Quickly apply LUTs (color grading) with ffmpeg

jeffgeerling.com·2026-06-26

作者分享了使用 ffmpeg 快速应用 LUT 进行视频色彩调级的实用参考指南。尽管由于额外的工作流步骤,许多人曾长期避免使用 LUT 和 Log 视频素材,但 Log 格式能像 RAW 照片一样保留传感器完整的动态范围。这使得创作者能够在后期处理中提取更丰富的色彩和亮度信息。通过 ffmpeg 简化这一流程,可以有效提升视频后期的色彩处理效率。

2026年6月25日

这是一篇简短的笔记,主要是为了给我自己留个参考。

多年来我一直避免使用 LUT 和 'Log' 视频素材1,主要是因为它涉及额外的一点点工作流程。就像 RAW 照片一样,'Log' 素材保留了视频传感器的完整动态范围,因此你稍后可以从素材中提取更多的色彩和亮度信息。

但与摄影不同(RAW 格式在摄影领域已经存在了几十年,而且许多工作流程“直接就能用”,不需要我对每张照片进行“调色”),在视频领域,能完美处理 Log 素材的消费者级应用少之又少。你通常会得到一团灰蒙蒙的糟糕画面。

我不想为了处理我拍摄的每一段视频而去启动 DaVinci Resolve 或 Final Cut Pro。特别是如果我因为某个特定原因使用了 Log 录制,却忘记切换回“正常”模式,随后又拍了更多片段。

差异非常明显2,正如我用 DJI Osmo Pocket 4 在家里和孩子们一起拍摄的这段视频(上方)所示。我只是拿起来测试了一下,直到把素材导入电脑后,我才意识到它仍然处于“10-bit D-Log”模式。

我不想为了给半打片段调色并放入我们的家庭视频库而大费周章地启动 Final Cut Pro,所以在看到关于内置 lut3d 滤镜的提及后,我转向了 ffmpeg。

用于 LUT 的 ffmpeg

我正在使用的完整 ffmpeg 命令是:

ffmpeg \
  -i /Users/jgeerling/Downloads/DJI_20000219193052_0005_D.MP4 \
  -vf "lut3d=osmo-vivid.cube" \
  -c:v hevc_videotoolbox \
  -profile:v main10 \
  -b:v 30M \
  -pix_fmt p010le \
  -tag:v hvc1 \
  -c:a copy \
  DJI_0005_D_converted.mp4

其中一些标志参数只能在配备 Apple 硬件 H.265 视频编码器的 Mac 上运行。关键是 -vf "lut3d=osmo-vivid.cube",这是指向特定于你的相机/素材的 .cube 文件的路径。

在这个例子中,我使用的是 DJI Osmo Pocket 4 的 'vivid' LUT3。

如果你想修改 ffmpeg 的标志参数以适配你自己硬件的 H.264 或 H.265 加速,只需复制上面的命令并将其交给你最喜欢的 LLM 运行即可。在使用了 ffmpeg 二十多年后,试图记住所有各种各样的标志和缩写仍然感觉像是在学 AP Calculus 2 一样 :D

我很希望能有一个关于“LUT 附属文件(sidecar)”的标准。Apple、BlackMagic、Sony 等公司确实将 LUT 数据嵌入到了视频文件中……但并没有统一的标准,所以你需要用 DaVinci Resolve 来处理 Blackmagic 相机的片段,用 QuickTime 来处理 iPhone 的片段……最终,如果你不像我用 ffmpeg 那样进行处理的话,大多数非专业应用程序只会显示一段灰蒙蒙的视频文件。唉。

使用 ffmpeg 批量转换 Log 素材

给定一个特定的 .cube 文件,你可以通过以下方式将 LUT 应用到给定文件夹中的所有 MP4 文件:

#!/bin/bash
CUBE="osmo-vivid.cube"
DIR="video_files"

files=("$DIR"/*.MP4)
total=${#files[@]}
count=0

for input in "${files[@]}"; do
    [ -e "$input" ] || continue
    ((count++))
    echo "Processing file $count of $total: $(basename "$input")"
    
    ffmpeg -i "$input" -vf "lut3d=$CUBE" -c:v hevc_videotoolbox -profile:v main10 -b:v 30M -pix_fmt p010le -tag:v hvc1 -c:a copy "${input%.MP4}_converted.mp4"
done

将你的 .cube 文件的路径放在 CUBE 中,并将包含一堆未调色的 .MP4 文件的目录路径放在 DIR 中。保存脚本,赋予其可执行权限,然后运行它!

  • 这会让我成为一个 LUT 党吗? ↩︎
  • 抱歉我的脸可能会造成“跳跃式惊吓”(jump-scare),我本来是想找一帧画面来为这篇博文做配图的,而这已经是我能找到的最好的一张了,因为其他所有画面里都有我的孩子,而他们有权决定自己何时在网上露面! ↩︎
  • 令人烦恼的是,由于 DJI 的进口限制,无法从美国网站直接下载 Pocket 4 的 LUT,因此我在这里链接到了英国网站。 ↩︎
  • 需要完整排版与评论请前往来源站点阅读。