关于 ffmpeg-color-grading-chromakey
面向视频编辑者和创作者的 FFmpeg 调色技能,涵盖色度键控与颜色处理,并提供滤镜示例,涉及抠像、校色和色彩空间转换。
主要功能
- 01绿幕与蓝幕抠像
- 02基于 LUT 的调色
- 03曲线与色彩平衡调整
- 04色相、饱和度和白平衡
- 05HDR 转 SDR
适用场景
- 01将抠像素材合成到背景上
- 02使用 LUT 应用电影风格
- 03校正偏色与饱和度
- 04将 HDR 素材转换为 SDR
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ josiahsiegel/ claude-plugin-marketplace --skill ffmpeg-color-grading-chromakey安装后在 Claude Code 中输入/ffmpeg-color-grading-chromakey确认已加载。
详细介绍
关键指南
Windows 文件路径要求
强制要求:在 Windows 上始终使用反斜杠表示文件路径
在 Windows 上使用 Edit 或 Write 工具时,文件路径必须使用反斜杠(\),不得使用正斜杠(/)。
快速参考
| 任务 | 命令 |
|---|---|
| 移除绿幕 | -vf "chromakey=0x00FF00:0.3:0.1" |
| 移除蓝幕 | -vf "chromakey=0x0000FF:0.3:0.1" |
| 应用 LUT | -vf "lut3d=cinematic.cube" |
| 色彩曲线 | -vf "curves=preset=vintage" |
| 调整饱和度 | -vf "eq=saturation=1.5" |
| 色相偏移 | -vf "hue=h=30" |
| 白平衡 | -vf "colortemperature=6500" |
何时使用此技能
用于色彩处理操作:
- 移除绿幕/蓝幕背景
- 应用 LUT 进行色彩分级
- 色彩校正与增强
- 创建电影感色彩效果
- HDR/SDR 转换
- 用于合成的色度键控
FFmpeg 色彩分级与色度键控(2025)
使用 FFmpeg 进行色彩处理、移除绿幕、LUT 分级和高级色彩特效的完整指南。
移除绿幕(色度键控)
基本色度键控
# Remove green screen (standard green 0x00FF00)
ffmpeg -i foreground.mp4 -i background.mp4 \
-filter_complex "[0:v]chromakey=0x00FF00:0.3:0.1[fg];[1:v][fg]overlay" \
-c:v libx264 -crf 18 output.mp4
# Parameters:
# - color: The key color (hex 0xRRGGBB)
# - similarity: How close to key color (0.0-1.0, lower = more precise)
# - blend: Edge softness (0.0-1.0, higher = softer edges)
调整色度键控参数
# Tight key (clean edges, may leave green fringe)
ffmpeg -i green_screen.mp4 -i background.jpg \
-filter_complex "[0:v]chromakey=0x00FF00:0.1:0.0[fg];[1:v][fg]overlay" \
output.mp4
# Loose key (removes all green, may eat into subject)
ffmpeg -i green_screen.mp4 -i background.jpg \
-filter_complex "[0:v]chromakey=0x00FF00:0.5:0.2[fg];[1:v][fg]overlay" \
output.mp4
# Balanced (recommended starting point)
ffmpeg -i green_screen.mp4 -i background.jpg \
-filter_complex "[0:v]chromakey=0x00FF00:0.3:0.1[fg];[1:v][fg]overlay" \
output.mp4
移除蓝幕
# Remove blue screen
ffmpeg -i blue_screen.mp4 -i background.mp4 \
-filter_complex "[0:v]chromakey=0x0000FF:0.3:0.1[fg];[1:v][fg]overlay" \
output.mp4
# Chroma blue (common broadcast blue)
ffmpeg -i footage.mp4 -i background.mp4 \
-filter_complex "[0:v]chromakey=0x0047AB:0.3:0.15[fg];[1:v][fg]overlay" \
output.mp4
绿幕颜色示例
| 名称 | 十六进制 | 用途 |
|---|---|---|
| 纯绿 | 0x00FF00 | 数字绿幕 |
| 色度绿 | 0x00B140 | 专业电影/电视 |
| 浅绿 | 0x90EE90 | 较浅的背景 |
| 纯蓝 | 0x0000FF | 数字蓝幕 |
| 色度蓝 | 0x0047AB | 专业广播 |
带消除溢色的高级色度键控
移除绿色溢色(主体上的绿色反光):
# Remove green screen with despill
ffmpeg -i green_screen.mp4 -i background.mp4 \
-filter_complex "\
[0:v]chromakey=0x00FF00:0.3:0.1,\
colorbalance=gs=-0.1:gm=-0.1:gh=-0.1[fg];\
[1:v][fg]overlay" \
output.mp4
# More aggressive despill using hue filter
ffmpeg -i green_screen.mp4 -i background.mp4 \
-filter_complex "\
[0:v]chromakey=0x00FF00:0.3:0.1,\
hue=s=0.9[fg];\
[1:v][fg]overlay" \
output.mp4
Colorkey 滤镜(透明度)
Colorkey 会创建真正的透明效果(alpha 通道),而不是进行合成:
# Create transparent video (WebM with alpha)
ffmpeg -i green_screen.mp4 \
-vf "colorkey=0x00FF00:0.3:0.1" \
-c:v libvpx-vp9 -pix_fmt yuva420p \
output_transparent.webm
# Create transparent PNG sequence
ffmpeg -i green_screen.mp4 \
-vf "colorkey=0x00FF00:0.3:0.1" \
frame_%04d.png
Colorkey 与 Chromakey 对比
| 特性 | colorkey | chromakey |
|---|---|---|
| 输出 | Alpha 通道 | 已合成 |
| 格式 | 需要支持 alpha | 任意格式 |
| 用途 | 创建蒙版 | 直接合成 |
| 格式 | WebM、PNG、ProRes 4444 | MP4、MKV 等 |
LUT 色彩分级
应用 3D LUT
# Apply .cube LUT file
ffmpeg -i input.mp4 \
-vf "lut3d=cinematic.cube" \
-c:v libx264 -crf 18 output.mp4
# Apply .3dl LUT
ffmpeg -i input.mp4 \
-vf "lut3d=film_look.3dl" \
output.mp4
# Specify interpolation method
ffmpeg -i input.mp4 \
-vf "lut3d=lut.cube:interp=trilinear" \
output.mp4
LUT 插值方法
| 方法 | 质量 | 速度 |
|---|---|---|
| nearest | 最低 | 最快 |
| trilinear | 良好 | 快 |
| tetrahedral | 最佳 | 较慢 |
# High quality LUT application
ffmpeg -i input.mp4 \
-vf "lut3d=film.cube:interp=tetrahedral" \
-c:v libx264 -crf 18 output.mp4
混合原始画面与 LUT
# 50% LUT strength
ffmpeg -i input.mp4 \
-filter_complex "\
[0:v]split[a][b];\
[a]lut3d=cinematic.cube[graded];\
[b][graded]blend=all_expr='A*0.5+B*0.5'" \
output.mp4
# Variable LUT intensity using colorbalance
ffmpeg -i input.mp4 \
-vf "lut3d=lut.cube,colorbalance=rs=0:gs=0:bs=0" \
output.mp4
常见 LUT 风格
无需外部 LUT 即可创建常见效果:
# Teal and Orange (blockbuster look)
ffmpeg -i input.mp4 \
-vf "colorbalance=rs=0.1:gs=-0.1:bs=-0.2:rm=0.05:gm=-0.05:bm=-0.1:rh=0.1:gh=-0.05:bh=-0.15" \
output.mp4
# Vintage/Retro
ffmpeg -i input.mp4 \
-vf "curves=preset=vintage,eq=saturation=0.8:contrast=1.1" \
output.mp4
# High Contrast Cinematic
ffmpeg -i input.mp4 \
-vf "eq=contrast=1.2:brightness=-0.05:saturation=1.1,unsharp=5:5:0.8" \
output.mp4
# Desaturated/Bleach Bypass
ffmpeg -i input.mp4 \
-vf "eq=saturation=0.5:contrast=1.3:brightness=-0.02" \
output.mp4
# Warm/Golden Hour
ffmpeg -i input.mp4 \
-vf "colortemperature=5000,eq=saturation=1.2:brightness=0.05" \
output.mp4
# Cool/Moonlight
ffmpeg -i input.mp4 \
-vf "colortemperature=8000,eq=saturation=0.9:brightness=-0.05" \
output.mp4
色彩曲线
预设曲线
# Vintage look
ffmpeg -i input.mp4 -vf "curves=preset=vintage" output.mp4
# Cross process (film developing effect)
ffmpeg -i input.mp4 -vf "curves=preset=cross_process" output.mp4
# Negative image
ffmpeg -i input.mp4 -vf "curves=preset=negative" output.mp4
# Increase contrast
ffmpeg -i input.mp4 -vf "curves=preset=strong_contrast" output.mp4
# Lighter
ffmpeg -i input.mp4 -vf "curves=preset=lighter" output.mp4
# Darker
ffmpeg -i input.mp4 -vf "curves=preset=darker" output.mp4
# Linear contrast
ffmpeg -i input.mp4 -vf "curves=preset=linear_contrast" output.mp4
# Medium contrast
ffmpeg -i input.mp4 -vf "curves=preset=medium_contrast" output.mp4
自定义曲线
# S-curve for contrast (RGB)
ffmpeg -i input.mp4 \
-vf "curves=all='0/0 0.25/0.20 0.5/0.5 0.75/0.80 1/1'" \
output.mp4
# Lift shadows, lower highlights
ffmpeg -i input.mp4 \
-vf "curves=all='0/0.05 0.5/0.5 1/0.95'" \
output.mp4
# Per-channel curves (R, G, B)
ffmpeg -i input.mp4 \
-vf "curves=r='0/0 0.5/0.6 1/1':g='0/0 0.5/0.5 1/1':b='0/0 0.5/0.4 1/1'" \
output.mp4
# Crushed blacks (film look)
ffmpeg -i input.mp4 \
-vf "curves=all='0/0.03 0.15/0.15 0.5/0.5 0.85/0.85 1/1'" \
output.mp4
色彩平衡
colorbalance 滤镜
# Warm highlights, cool shadows
ffmpeg -i input.mp4 \
-vf "colorbalance=rs=-0.1:gs=-0.05:bs=0.1:rh=0.1:gh=0.05:bh=-0.1" \
output.mp4
# Parameters:
# rs/gs/bs = red/green/blue shadows (-1 to 1)
# rm/gm/bm = red/green/blue midtones (-1 to 1)
# rh/gh/bh = red/green/blue highlights (-1 to 1)
常见色彩平衡预设
# Orange and Teal (cinematic)
ffmpeg -i input.mp4 \
-vf "colorbalance=rs=0.15:bs=-0.15:rh=0.1:bh=-0.1" \
output.mp4
# Warm overall
ffmpeg -i input.mp4 \
-vf "colorbalance=rs=0.1:rm=0.05:rh=0.1:bs=-0.05:bm=-0.03:bh=-0.05" \
output.mp4
# Cool shadows, warm highlights (split toning)
ffmpeg -i input.mp4 \
-vf "colorbalance=rs=-0.1:bs=0.1:rh=0.15:bh=-0.1" \
output.mp4
色相与饱和度
hue 滤镜
# Rotate hue by 30 degrees
ffmpeg -i input.mp4 -vf "hue=h=30" output.mp4
# Increase saturation
ffmpeg -i input.mp4 -vf "hue=s=1.5" output.mp4
# Decrease saturation (desaturate)
ffmpeg -i input.mp4 -vf "hue=s=0.5" output.mp4
# Adjust brightness
ffmpeg -i input.mp4 -vf "hue=b=0.1" output.mp4
# Animated hue rotation
ffmpeg -i input.mp4 \
-vf "hue=h=t*36" \
output.mp4 # Full rotation every 10 seconds
eq 滤镜(综合)
# Full color adjustment
ffmpeg -i input.mp4 \
-vf "eq=contrast=1.1:brightness=0.05:saturation=1.2:gamma=1.1" \
output.mp4
# eq parameters:
# contrast: 0-2 (default 1)
# brightness: -1 to 1 (default 0)
# saturation: 0-3 (default 1)
# gamma: 0.1-10 (default 1)
# gamma_r/gamma_g/gamma_b: per-channel gamma
白平衡
colortemperature 滤镜(FFmpeg 5.1+)
# Warm up (lower temperature)
ffmpeg -i input.mp4 \
-vf "colortemperature=temperature=5000" \
output.mp4
# Cool down (higher temperature)
ffmpeg -i input.mp4 \
-vf "colortemperature=temperature=8000" \
output.mp4
# Neutral daylight
ffmpeg -i input.mp4 \
-vf "colortemperature=temperature=6500" \
output.mp4
手动白平衡
# Using colorbalance for white balance
# Correct blue cast (add warmth)
ffmpeg -i input.mp4 \
-vf "colorbalance=rs=0.1:rm=0.05:bs=-0.1:bm=-0.05" \
output.mp4
# Correct yellow/orange cast (add blue)
ffmpeg -i input.mp4 \
-vf "colorbalance=rs=-0.1:rm=-0.05:bs=0.1:bm=0.05" \
output.mp4
色彩空间转换
SDR 色彩空间
# Convert BT.601 to BT.709
ffmpeg -i input.mp4 \
-vf "colorspace=bt709:iall=bt601-6-625:fast=1" \
-c:v libx264 -crf 18 \
output.mp4
# Force color space metadata
ffmpeg -i input.mp4 \
-color_primaries bt709 -color_trc bt709 -colorspace bt709 \
-c:v libx264 -crf 18 output.mp4
HDR 转 SDR 色调映射
# Basic HDR to SDR (BT.2020/PQ to BT.709)
ffmpeg -i hdr_input.mp4 \
-vf "zscale=t=linear:npl=100,format=gbrpf32le,\
zscale=p=bt709,tonemap=tonemap=hable:desat=0,\
zscale=t=bt709:m=bt709:r=tv,format=yuv420p" \
-c:v libx264 -crf 18 sdr_output.mp4
# HDR10 to SDR with better quality
ffmpeg -i hdr10_input.mp4 \
-vf "zscale=t=linear:npl=100,format=gbrpf32le,\
zscale=p=bt709,tonemap=tonemap=reinhard:param=0.4:desat=0,\
zscale=t=bt709:m=bt709,format=yuv420p" \
-c:v libx264 -crf 18 output.mp4
色调映射算法
| 算法 | 特性 |
|---|---|
| none | 仅裁切 |
| clip | 硬裁切至 SDR 范围 |
| linear | 线性缩放 |
| gamma | Gamma 曲线 |
| reinhard | 柔和滚降,自然 |
| hable | 类似胶片,由 John Hable 提出 |
| mobius | S 曲线,平滑 |
选择性色彩处理
色彩隔离(选择性去饱和)
# Keep only red, desaturate rest (Sin City effect)
ffmpeg -i input.mp4 \
-vf "hue=s=0,\
split[a][b];\
[a]hue=s=0[bw];\
[b]colorkey=0xFF0000:0.3:0.1[red];\
[bw][red]overlay" \
output.mp4
# Isolate specific color range using selectivecolor
# Note: Use colorchannelmixer for more control
colorchannelmixer
# Convert to grayscale with proper luminance weights
ffmpeg -i input.mp4 \
-vf "colorchannelmixer=.3:.59:.11:0:.3:.59:.11:0:.3:.59:.11" \
output.mp4
# Sepia tone
ffmpeg -i input.mp4 \
-vf "colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131" \
output.mp4
# Swap red and blue channels
ffmpeg -i input.mp4 \
-vf "colorchannelmixer=0:0:1:0:0:1:0:0:1:0:0:0" \
output.mp4
# Boost reds, reduce blues
ffmpeg -i input.mp4 \
-vf "colorchannelmixer=1.2:0:0:0:0:1:0:0:0:0:0.8:0" \
output.mp4
专业分级链
胶片模拟
# 35mm Film Look
ffmpeg -i input.mp4 \
-vf "\
eq=contrast=1.1:saturation=0.95:gamma=1.05,\
curves=preset=cross_process,\
colorbalance=rs=0.05:bh=-0.05,\
noise=c0s=3:c1s=3:c0f=t:c1f=t,\
unsharp=3:3:0.5" \
-c:v libx264 -crf 18 film_look.mp4
# Kodak Portra Style
ffmpeg -i input.mp4 \
-vf "\
eq=saturation=0.9:contrast=1.05,\
colorbalance=rs=0.1:gs=-0.02:rm=0.05:gm=-0.02,\
curves=r='0/0.02 1/0.98':g='0/0 1/1':b='0/0.02 1/0.95'" \
output.mp4
# Fuji Film Style
ffmpeg -i input.mp4 \
-vf "\
eq=saturation=1.1:contrast=1.05,\
colorbalance=gs=0.05:bs=0.08:gm=0.02:bm=0.05,\
curves=g='0/0.02 1/1'" \
output.mp4
现代电影风格
# Blockbuster Orange & Teal
ffmpeg -i input.mp4 \
-vf "\
eq=contrast=1.15:saturation=1.1:brightness=-0.02,\
colorbalance=rs=0.12:gs=-0.04:bs=-0.15:rh=0.08:bh=-0.12,\
curves=all='0/0.02 0.5/0.5 1/0.98',\
unsharp=5:5:0.6" \
-c:v libx264 -crf 18 cinematic.mp4
# Moody/Dark Cinematic
ffmpeg -i input.mp4 \
-vf "\
eq=contrast=1.2:brightness=-0.08:saturation=0.85,\
colorbalance=bs=0.1:bm=0.05:gh=-0.05,\
curves=all='0/0.05 0.5/0.45 1/0.9'" \
output.mp4
# High Key Bright
ffmpeg -i input.mp4 \
-vf "\
eq=contrast=0.9:brightness=0.1:saturation=0.9:gamma=0.85,\
colorbalance=rs=0.05:gs=0.02:bs=0.02" \
output.mp4
音乐视频风格
# Neon/Cyberpunk
ffmpeg -i input.mp4 \
-vf "\
eq=contrast=1.3:saturation=1.5:brightness=-0.05,\
colorbalance=rs=0.2:bs=0.2:rm=-0.1:bm=0.15,\
unsharp=5:5:1.0" \
output.mp4
# VHS/Retro
ffmpeg -i input.mp4 \
-vf "\
eq=saturation=1.2:contrast=0.95,\
chromashift=cbh=2:cbv=2,\
noise=c0s=10:c1s=5:allf=t,\
curves=preset=vintage" \
output.mp4
# Dream/Ethereal
ffmpeg -i input.mp4 \
-filter_complex "\
[0:v]split[a][b];\
[a]gblur=sigma=15,eq=brightness=0.1[blur];\
[b][blur]blend=all_mode=screen:all_opacity=0.3[out]" \
-map "[out]" -c:v libx264 -crf 18 dream.mp4
动态色彩效果
基于时间的色彩变化
# Gradually warm over time
ffmpeg -i input.mp4 \
-vf "colorbalance=rs='0.1*t/30':bs='-0.1*t/30'" \
output.mp4
# Pulsing saturation
ffmpeg -i input.mp4 \
-vf "hue=s='1+0.3*sin(t*2)'" \
output.mp4
# Day to night transition
ffmpeg -i input.mp4 \
-vf "\
colortemperature=temperature='8000-3000*t/30',\
eq=brightness='-0.2*t/30':saturation='1-0.3*t/30'" \
output.mp4
故障排除
常见问题
分级后渐变出现色带:
# Add dithering
ffmpeg -i input.mp4 \
-vf "lut3d=lut.cube,format=yuv420p10le" \
-c:v libx264 -profile:v high10 -crf 18 output.mp4
# Or add subtle noise
ffmpeg -i input.mp4 \
-vf "lut3d=lut.cube,noise=c0s=2:c0f=a" \
output.mp4
编码后色彩偏移:
# Force color space flags
ffmpeg -i input.mp4 \
-vf "your_filters" \
-color_primaries bt709 -color_trc bt709 -colorspace bt709 \
-c:v libx264 -crf 18 output.mp4
色度键控出现绿色边缘:
# Use despill with colorbalance
ffmpeg -i green_screen.mp4 -i bg.mp4 \
-filter_complex "\
[0:v]chromakey=0x00FF00:0.25:0.1,\
colorbalance=gs=-0.15:gm=-0.1[fg];\
[1:v][fg]overlay" \
output.mp4
本指南介绍 FFmpeg 色彩分级和色度键控操作。有关转场,请参阅 ffmpeg-transitions-effects;有关形状,请参阅 ffmpeg-shapes-graphics。
评论
支持 Markdown