FFmpeg——参数详解
FFmpeg参数详解
- 一、基本命令结构
- 1.1、查询参数
- 1.1.1、version
- 1.1.2、buildconf
- 1.1.3、devices
- 1.1.4、formats
- 1.1.5、muxers
- 1.1.6、demuxers
- 1.1.7、codecs
- 1.1.8、decoders
- 1.1.9、encoders
- 1.1.10、bsfs
- 1.1.11、protocols
- 1.1.12、filters
- 1.1.13、pix_fmts
- 1.1.14、layouts
- 1.1.15、sample_fmts
- 1.1.16、colors
一、基本命令结构
ffmpeg [全局选项] [输入文件选项] -i 输入文件 [输出文件选项] 输出文件
1.1、查询参数
命令参数 | 内容 |
---|---|
-version | 显示版本 |
-buildconf | 显示编译配置 |
-devices | 显示ffmpeg支持的输入/输出设备(如摄像头、屏幕捕获、音频设备等) |
-formats | 显示可用格式(muxers+demuxers) |
-muxers | 显示可用复用器 |
-demuxers | 显示可用解复用器 |
-codecs | 显示可用编解码器 (decoders+encoders) |
-decoders | 显示可用解码器 |
-encoders | 显示可用编码器 |
-bsfs | 显示可用比特流filter |
-protocols | 显示可用的协议 |
-filters | 显示可用的过滤器 |
-pix_fmts | 显示可用的像素格式 |
-layouts | 显示标准声道名称 |
-sample_fmts | 显示可用的音频采样格式 |
-colors | 显示可用的颜色名称 |
1.1.1、version
- 第一段为版本信息
- 第二段为FFmpeg在编译时使用的具体配置选项。FFmpeg是一个功能强大的多媒体框架,可以处理视频和音频数据。这段配置信息表明了FFmpeg在编译时启用或禁用了哪些特性、库和硬件加速等
- 第三段为函数库的版本信息
1.1.2、buildconf
实际就是将上文的第二段参数更加详细的描述。
1.1.3、devices
ffmpeg -devices
仅显示 FFmpeg 支持的设备类型,不显示具体设备名称。要查看具体设备(如摄像头、麦克风),需使用特定平台的命令(如 avfoundation、dshow)。
# 查看macOs
ffmpeg -f avfoundation -list_devices true -i ""
1.1.4、formats
关键说明:
D.
,Demuxing(解封装支持,即可以读取该格式).E
,Muxing(封装支持,即可以写入该格式)DE
,同时支持输入和输出(如mp4,mov,avi)..d
,device,硬件设备
常见格式:
格式 | 说明 |
---|---|
mp4 | MP4 容器(H.264/AAC 常用) |
mov | QuickTime 格式 |
avi | AVI 容器 |
mkv | Matroska 容器(支持多音轨/字幕) |
flv | Flash 视频 |
webm | WebM(VP9/Opus) |
mpegts | MPEG-TS(流媒体常用) |
gif | 动画 GIF |
wav | 无损 PCM 音频 |
mp3 | MP3 音频 |
aac | ADTS AAC 音频 |
h264 | 裸 H.264 视频流 |
yuv4mpegpipe | YUV 原始帧(用于滤镜处理) |
如何检查某个格式是否支持?
ffmpeg -formats | grep "格式名"#输出D mov,mp4,m4a,3gp,3g2,mj2 QuickTime / MOVE mp4 MP4 (MPEG-4 Part 14)
总结:
ffmpeg -formats
列出所有支持的容器格式(不包含编解码器)。- 要查看支持的编解码器,使用
ffmpeg -codecs
。 - 要查看支持的硬件加速,使用
ffmpeg -hwaccels
。
1.1.5、muxers
只查看复用器:
1.1.6、demuxers
只查看解复用器:
1.1.7、codecs
查看支持的编解码器:
字段解释:
符号 | 含义 |
---|---|
D | 支持解码 |
E | 支持编码 |
V | 视频编解码器 |
A | 音频编解码器 |
S | 字幕编解码器 |
I | 仅支持帧内编码(如 JPEG) |
L | 有损压缩 |
S | 无损压缩 |
常见视频编解码器:
编解码器 | 类型 | 说明 |
---|---|---|
h264 | 有损 | H.264/AVC(默认用 libx264) |
hevc | 有损 | H.265/HEVC(默认用 libx265) |
mpeg4 | 有损 | MPEG-4 Part 2(如 DivX/Xvid) |
vp9 | 有损 | Google VP9 |
av1 | 有损 | AOMedia AV1 |
prores | 无损 | Apple ProRes |
ffv1 | 无损 | FFmpeg 无损视频 |
常见音频编解码器:
编解码器 | 类型 | 说明 |
---|---|---|
aac | 有损 | AAC(高级音频编码) |
mp3 | 有损 | MPEG Audio Layer III |
opus | 有损 | 低延迟 Opus |
flac | 无损 | FLAC |
alac | 无损 | Apple Lossless |
常见字幕编解码器:
编解码器 | 说明 |
---|---|
ass | SSA/ASS 字幕 |
srt | SubRip 字幕 |
webvtt | WebVTT 字幕 |
常用查询示例:
检查H.264支持:
ffmpeg -codecs | grep h264# 输出DEV.LS h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (decoders: h264 libopenh264) (encoders: libx264 libx264rgb libopenh264 h264_videotoolbox)
查找所有无损音频编解码器:
ffmpeg -codecs | grep "A..S"# 输出DEVIL. asv1 ASUS V1DEVIL. asv2 ASUS V2D.V.L. lscr LEAD Screen CaptureDEAI.S alac ALAC (Apple Lossless Audio Codec) (decoders: alac alac_at) (encoders: alac alac_at)D.AI.S apac Marian's A-pac audioD.AI.S ape Monkey's AudioD.AI.S atrac3al ATRAC3 AL (Adaptive TRansform Acoustic Coding 3 Advanced Lossless)D.AI.S atrac3pal ATRAC3+ AL (Adaptive TRansform Acoustic Coding 3+ Advanced Lossless) (decoders: atrac3plusal)D.AILS bonk Bonk audioD.AI.S dst DST (Direct Stream Transfer)DEAILS dts DCA (DTS Coherent Acoustics) (decoders: dca) (encoders: dca)DEAI.S flac FLAC (Free Lossless Audio Codec)DEA..S mlp MLP (Meridian Lossless Packing)D.AI.S mp4als MPEG-4 Audio Lossless Coding (ALS) (decoders: als)D.AI.S osq OSQ (Original Sound Quality)DEAI.S pcm_bluray PCM signed 16|20|24-bit big-endian for Blu-ray mediaDEAI.S pcm_dvd PCM signed 20|24-bit big-endianD.AI.S pcm_f16le PCM 16.8 floating point little-endianD.AI.S pcm_f24le PCM 24.0 floating point little-endianDEAI.S pcm_f32be PCM 32-bit floating point big-endian
...
查看可用的硬件加速编解码器:
ffmpeg -hwaccels# 输出
Hardware acceleration methods:
videotoolbox
总结:
- 编码器/解码器
- 若显示 D 和 E(如 DEA.L. aac),表示支持解码和编码。
- 若只有 D(如 D.V.L. cinepak),则仅支持解码(无法用此格式编码)。
- 实际使用编解码器:在命令中通过
-c:v
(视频)或-c:a
(音频)指定,例如:
ffmpeg -i input.mp4 -c:v libx264 -c:a aac output.mp4
1.1.8、decoders
列出 FFmpeg 支持的所有解码器(即可以解码的编解码器)
字段解释:
符号 | 含义 |
---|---|
V | 视频解码器 |
A | 音频解码器 |
S | 字幕解码器 |
F | 支持帧级多线程 |
S | 支持切片级多线程 |
X | 实验性解码器(可能不稳定) |
B | 支持 draw_horiz_band(旧式多线程) |
D | 支持直接渲染方法 1 |
常见视频解码器:
解码器 | 说明 |
---|---|
h264 | H.264/AVC |
hevc | H.265/HEVC |
mpeg4 | MPEG-4 Part 2(DivX/Xvid) |
vp9 | Google VP9 |
av1 | AOMedia AV1 |
prores | Apple ProRes |
mjpeg | Motion JPEG |
常见音频解码器:
解码器 | 说明 |
---|---|
aac | AAC(高级音频编码) |
mp3 | MP3 |
opus | Opus |
flac | FLAC |
ac3 | Dolby Digital (AC-3) |
常见字幕解码器:
解码器 | 说明 |
---|---|
ass | SSA/ASS 字幕 |
srt | SubRip 字幕 |
webvtt | WebVTT 字幕 |
常用查询示例:
# 检查H.264解码器支持:
ffmpeg -decoders | grep h264# 查找所有音频解码器
ffmpeg -decoders | grep "A"# 查看实验性解码器
ffmpeg -decoders | grep "X"
1.1.9、encoders
列出 FFmpeg 支持的所有编码器(即可用于编码的编解码器)
字段解释:
符号 | 含义 |
---|---|
V | 视频编码器 |
A | 音频编码器 |
S | 字幕编码器 |
F | 支持帧级多线程 |
S | 支持切片级多线程 |
X | 实验性编码器(可能不稳定) |
B | 支持 draw_horiz_band(旧式多线程) |
D | 支持直接渲染方法 1 |
常见视频编码器:
编码器 | 类型 | 说明 |
---|---|---|
libx264 | 有损 | H.264/AVC(最常用) |
libx265 | 有损 | H.265/HEVC(高效压缩) |
libvpx-vp9 | 有损 | Google VP9(WebM/流媒体) |
libaom-av1 | 有损 | AOMedia AV1(新一代开源编码) |
mpeg4 | 有损 | MPEG-4 Part 2(兼容旧设备) |
prores | 无损 | Apple ProRes(专业视频编辑) |
ffv1 | 无损 | FFmpeg 无损视频(归档用) |
常见音频编码器:
编码器 | 类型 | 说明 |
---|---|---|
aac | 有损 | AAC(主流音频格式) |
libmp3lame | 有损 | MP3(兼容性广) |
libopus | 有损 | Opus(低延迟,适合语音/流媒体) |
flac | 无损 | FLAC(无损压缩) |
alac | 无损 | Apple Lossless |
常见字幕编码器:
编码器 | 说明 |
---|---|
srt | SubRip 字幕 |
ass | SSA/ASS 字幕(支持样式) |
webvtt | WebVTT 字幕 |
常用查询示例:
# 检查 H.264 编码器:
ffmpeg -encoders | grep libx264# 查找所有无损音频编码器:
ffmpeg -encoders | grep "A.*S"# 查看实验性编码器:
ffmpeg -encoders | grep "X"
1.1.10、bsfs
列出 FFmpeg 支持的所有比特流过滤器(Bitstream Filters,简称 BSFs)。这些过滤器用于在解码后、编码前修改编码的比特流,而无需完全解码和重新编码。
常见比特流过滤器及用途:
过滤器名称 | 用途 |
---|---|
aac_adtstoasc | 将 AAC 数据从 ADTS 转换为 ASC 格式(用于 MP4 封装) |
h264_mp4toannexb | 将 H.264 比特流从 MP4 格式转换为 Annex B 格式(用于 TS 流或裸流) |
hevc_mp4toannexb | 将 HEVC 比特流从 MP4 格式转换为 Annex B 格式 |
extract_extradata | 从比特流中提取 extradata(如 SPS/PPS) |
dump_extra | 打印 extradata 信息(调试用) |
vp9_superframe | 合并 VP9 超级帧 |
vp9_superframe_split | 拆分 VP9 超级帧 |
h264_metadata | 修改 H.264 流的元数据(如 level、profile) |
hevc_metadata | 修改 HEVC 流的元数据 |
mpeg4_unpack_bframes | 解包 MPEG-4 B 帧 |
noise | 向比特流添加噪声(测试用) |
null | 不做任何修改(用于测试或占位) |
使用场景:
# MP4 转 TS 流时处理 H.264 数据
ffmpeg -i input.mp4 -c:v copy -bsf:v h264_mp4toannexb -f mpegts output.ts# 提取 H.264 的 SPS/PPS 信息:
ffmpeg -i input.mp4 -c:v copy -bsf:v dump_extra -f null -# 修改 H.264 的 profile/level:
ffmpeg -i input.mp4 -c:v copy -bsf:v h264_metadata=profile=high output.mp4# 处理 AAC 音频流:
ffmpeg -i input.mp4 -c:a copy -bsf:a aac_adtstoasc output.aac
总结:
- 作用阶段:比特流过滤器在解码后、编码前处理数据,适用于
-c copy
(流复制)场景。 - 组合使用:可通过逗号分隔多个过滤器(如
-bsf:v h264_mp4toannexb,noise
)。 - 查看参数:使用
ffmpeg -h bsf=<过滤器名>
查看具体选项(如ffmpeg -h bsf=h264_metadata
)。
1.1.11、protocols
列出 FFmpeg 支持的所有输入/输出协议(如 file, http, rtmp 等)。这些协议定义了 FFmpeg 如何访问输入源或输出到目标位置。
常见输入协议:
协议名 | 用途 |
---|---|
file | 本地文件(默认协议,可省略) |
http/https | HTTP/HTTPS 流(如 MP4/M3U8) |
hls HLS | 直播/点播流(.m3u8) |
rtmp/rtmps | RTMP 直播流(带/不带 SSL) |
tcp/udp | 网络流(如 RTP/RTSP) |
pipe | 从标准输入(stdin)读取数据 |
concat | 拼接多个文件(如分段视频) |
srtp | 安全 RTP 流(加密传输) |
常见输出协议:
协议名 | 用途 |
---|---|
file | 输出到本地文件 |
http/https | 输出到 HTTP 服务器 |
rtmp/rtmps | 推流到 RTMP 服务器 |
pipe | 输出到标准输出(stdout) |
icecast | 输出到 Icecast 音频服务器 |
udp | 输出为 UDP 数据包 |
使用场景:
# 从HTTP下载视频
ffmpeg -i http://example.com/video.mp4 -c copy output.mp4# 推流到 RTMP 服务器
ffmpeg -i input.mp4 -c:v libx264 -f flv rtmp://server/live/stream_key# 拼接分段视频(使用 concat 协议)
ffmpeg -f concat -i file_list.txt -c copy output.mp4# 从 UDP 接收流:
ffmpeg -i udp://@239.1.1.1:1234 -c copy output.ts# 输出到 stdout 并管道处理:
ffmpeg -i input.mp4 -f mp4 pipe:1 | other_command
总结:
- 隐式协议:若未指定协议(如 ffmpeg -i input.mp4),默认使用 file 协议。
- 协议参数:部分协议支持附加参数(如 http 的 user_agent,rtmp 的 flashver)。
- 动态协议:某些协议(如 hls、concat)需要指定 -f 格式。
1.1.12、filters
列出 FFmpeg 支持的所有滤镜(Filters),包括视频滤镜(vf)、音频滤镜(af)和通用滤镜。这些滤镜可以对音视频流进行各种处理,如裁剪、缩放、降噪、混音等。
字段说明:
符号 | 含义 |
---|---|
T | 支持时间轴(Timeline)操作(如 enable=‘between(t,10,20)’) |
S | 支持多线程切片处理(Slice threading) |
C | 支持动态命令(Command)控制(如运行时修改参数) |
A | 音频滤镜(输入/输出均为音频) |
V | 视频滤镜(输入/输出均为视频) |
N | 动态输入/输出(如 amix 可接受多个输入) |
`** | **` |
常用视频滤镜:
滤镜名 | 用途 | 示例 |
---|---|---|
scale | 调整分辨率 | scale=1280:720 |
crop | 裁剪视频 | crop=640:480💯50 |
`hflip/vflip 水平/垂直翻转 | hflip | |
rotate | 旋转视频 | rotate=90*PI/180 |
overlay | 叠加视频 | overlay=10:10 |
trim | 剪切片段 | trim=start=10:end=20 |
eq | 调整亮度/对比度 | eq=brightness=0.2 |
drawtext | 添加文字 | drawtext=text=‘Hello’:x=10:y=10 |
fps | 修改帧率 | fps=30 |
yadif | 去隔行扫描 | yadif=1 |
常用音频滤镜:
滤镜名 | 用途 | 示例 |
---|---|---|
volume | 调整音量 | volume=2.0 |
afade | 淡入淡出 | afade=t=in:ss=0:d=5 |
atempo | 变速不变调 | atempo=1.5 |
aresample | 重采样 | aresample=44100 |
pan | 声道调整 | `pan=stereo |
highpass/lowpass | 高通/低通滤波 | highpass=f=200 |
复杂滤镜:
FFmpeg 支持多个滤镜组合,使用 -filter_complex 处理复杂任务:
# 示例:水平翻转 + 缩放 + 叠加
ffmpeg -i input.mp4 -filter_complex "[0:v]hflip,scale=640:360[flipped];[0:v][flipped]overlay=10:10" output.mp4
常见使用场景:
# 调整视频分辨率(保持宽高比:scale=1280:-1(自动计算高度))
ffmpeg -i input.mp4 -vf "scale=1280:720" output.mp4# 裁剪视频 640:480 = 输出宽高,100:50 = 起始坐标(左上角)
ffmpeg -i input.mp4 -vf "crop=640:480:100:50" output.mp4# 添加水印
ffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=10:10" output.mp4# 提取音频片段
ffmpeg -i input.mp3 -af "atrim=start=10:end=20" output.mp3# 合并多个音频流
ffmpeg -i audio1.mp3 -i audio2.mp3 -filter_complex "amix=inputs=2" output.mp3
注意事项:
- 滤镜链顺序:滤镜按从左到右顺序执行(如 hflip,scale 先翻转再缩放)。
- GPU 加速:部分滤镜支持 GPU(如 scale_npp),需检查 FFmpeg 编译选项。
- 性能优化:
- 使用 -vf 代替 -filter_complex 处理简单任务。
- 启用多线程(如 -threads 4)。
1.1.13、pix_fmts
列出 FFmpeg 支持的所有像素格式(Pixel Formats)。像素格式定义了视频帧中像素的存储方式(如 RGB、YUV、色彩深度、平面/打包排列等),对视频处理和编解码性能有重要影响。
字段说明:
符号 | 含义 |
---|---|
I | 支持作为输入格式(解码器可输出此格式) |
O | 支持作为输出格式(编码器可接受此格式) |
H | 硬件加速格式(如 vaapi_vld) |
P | 调色板格式(如 GIF) |
B | 比特流格式(如字幕) |
NAME | 像素格式名称(如 yuv420p) |
NB_COMPONENTS | 颜色分量数(如 YUV=3,NV12=2) |
BITS_PER_PIXEL | 每像素总比特数(如 12=8+2+2) |
YUV格式(主流视频编码):
格式 | 说明 | 用途 |
---|---|---|
yuv420p | 标准 YUV 4:2:0 平面格式 | H.264/HEVC 默认 |
yuvj420p | 带 JPEG 色彩范围的 | YUV 4:2:0 旧式 MJPEG |
yuv422p | YUV 4:2:2 平面格式 | 专业视频 |
yuv444p | YUV 4:4:4 平面格式 | 高保真 |
nv12/nv21 | YUV 4:2:0 半平面(Y+UV交错) | 硬件加速常用 |
RGB格式:
格式 | 说明 | 用途 |
---|---|---|
rgb24 | 8-bit RGB 打包格式 | |
rgba | RGB + Alpha 通道 | |
bgr0 | BGR 打包(Windows 常用) |
硬件加速格式:
格式 | 说明 |
---|---|
vaapi_vld | Intel/AMD VAAPI 硬件解码 |
dxva2_vld | Windows DXVA2 硬件解码 |
cuda | NVIDIA CUDA 加速 |
特殊格式:
格式 | 说明 |
---|---|
gray | 8-bit 灰度图像 |
pal8 | 8-bit 调色板(如 GIF) |
使用场景:
# 查看当前视频的像素格式
ffmpeg -i input.mp4
# 在输出中查找 Stream #0:0(und): Video: h264 (yuv420p)。# 强制指定像素格式
# 输出为 yuv420p(兼容性最佳)
ffmpeg -i input.mp4 -pix_fmt yuv420p output.mp4# 转换为灰度视频
ffmpeg -i input.mp4 -pix_fmt gray output.mp4# 硬件解码时指定格式
# 使用 VAAPI 解码并转换为 yuv420p
ffmpeg -hwaccel vaapi -i input.mp4 -pix_fmt yuv420p output.mp4# 检查编码器支持的格式
ffmpeg -h encoder=libx264 | grep pix_fmts
1.1.14、layouts
列出 FFmpeg 支持的所有音频通道布局(Audio Channel Layouts),这些布局定义了音频通道的数量和排列方式(如立体声、5.1环绕声等)。
字段说明:
字段 | 含义 |
---|---|
NAME | 布局名称(如 stereo, 5.1) |
DESCRIPTION | 通道缩写组合(见下表) |
通道缩写对照:
缩写 | 全称 | 说明 |
---|---|---|
FL | Front Left | 左前 |
FR | Front Right | 右前 |
FC | Front Center | 中置 |
LFE | Low Frequency | 低频(低音炮) |
BL | Back Left | 左后 |
BR | Back Right | 右后 |
SL | Side Left | 左侧环绕 |
SR | Side Right | 右侧环绕 |
DL | Downmix Left | 下混左 |
DR | Downmix Right | 下混右 |
常见布局及用途:
布局名称 | 通道数 | 典型用途 |
---|---|---|
mono | 1 | 单声道(播客、电话语音) |
stereo | 2 | 立体声(音乐、普通视频) |
5.1 | 6 | 5.1环绕声(影院、游戏) |
5.1(side) | 6 | 5.1(侧环绕替代后环绕) |
7.1 | 8 | 7.1环绕声(高端影音) |
7.1(wide) | 8 | 7.1(增加前中置) |
使用场景:
# 查看音频文件的通道布局
ffmpeg -i input.mp3
# 在输出中查找 Stream #0:0: Audio: mp3 (stereo)。# 强制指定输出通道布局
# 将输入转为单声道
ffmpeg -i input.mp3 -ac 1 -layout mono output_mono.mp3# 将5.1音频转为立体声(自动下混)
ffmpeg -i input_5.1.mkv -ac 2 output_stereo.mp3# 自定义通道映射
# 提取5.1音频中的左前(FL)和右前(FR)通道
ffmpeg -i input_5.1.mkv -filter_complex "channelsplit=channel_layout=5.1:channels=FL+FR" output_stereo.mp3# 检查编码器支持的布局
ffmpeg -h encoder=aac | grep channel_layouts
# 输出示例
Supported channel layouts: mono stereo 5.1
关键点:
- 自动转换:若未指定 -layout,FFmpeg 会根据 -ac(通道数)自动选择布局(如 -ac 2 → stereo)。
- 兼容性:stereo 和 mono 是所有设备支持的基准布局。
- 无损处理:使用 -acodec copy 时需保持输入输出布局一致,否则会失败。
1.1.15、sample_fmts
列出 FFmpeg 支持的所有音频采样格式(Sample Formats)。这些格式定义了音频样本的位深度(如 8-bit、16-bit、32-bit)和数据类型(如整数 signed/unsigned 或浮点数 float),直接影响音频质量和处理精度。
字段说明:
符号 | 含义 |
---|---|
I | 支持作为输入格式(解码器可输出此格式) |
O | 支持作为输出格式(编码器可接受此格式) |
H | 硬件加速格式(如某些设备的 s16) |
NAME | 采样格式名称(如 s16, flt) |
DESCRIPTION | 格式的详细说明(位深度和类型) |
常见采样格式:
格式名 | 位深度 | 数据类型 | 典型用途 |
---|---|---|---|
u8 | 8-bit | 无符号整数 | 低质量音频(电话、旧游戏) |
s16 | 16-bit | 有符号整数 | CD音质(标准 PCM WAV/MP3) |
s32 | 32-bit | 有符号整数 | 专业音频处理 |
flt | 32-bit | 浮点数 | 高动态范围(录音/混音) |
dbl | 64-bit | 浮点数 | 超高精度计算(科学分析) |
使用场景:
# 查看音频文件的采样格式
ffmpeg -i input.wav
# 在输出中查找 Stream #0:0: Audio: pcm_s16le (s16le)。# 强制指定输出采样格式
# 转换音频为 32-bit 浮点格式(保留高精度)
ffmpeg -i input.mp3 -sample_fmt flt output.wav# 使用 16-bit 整数(兼容性最佳)
ffmpeg -i input.flac -sample_fmt s16 output.mp3# 硬件加速时的格式限制
# 某些硬件编码器仅支持 s16(需检查编码器支持)
ffmpeg -hwaccel cuda -i input.wav -c:a aac -sample_fmt s16 output.m4a# 检查编码器支持的格式
ffmpeg -h encoder=pcm_s16le | grep sample_fmts
关键点:
- 位深度与质量:
- s16(16-bit)是标准 CD 音质(动态范围 ~96dB)。
- flt(32-bit float)适合多次音效处理(避免截断噪声)。
- 兼容性:
- MP3/AAC 等有损编码通常内部使用 s16。
- WAV/FLAC 支持高精度格式(如 s32 或 flt)。
- 性能:
- 整数格式(s16)比浮点(flt)处理更快。
- 硬件加速可能限制格式(如仅支持 s16)。
1.1.16、colors
列出 FFmpeg 支持的所有颜色名称和颜色空间标识符。这些颜色名称可以在 FFmpeg 滤镜(如 drawtext、color)或参数(如背景色)中直接使用,而颜色空间标识符(如 bt709、smpte170m)用于定义视频的 YUV/RGB 色彩标准。
预定义颜色名称:
FFmpeg 支持 CSS 风格的颜色名称(如 red、blue)和十六进制值(如 #FF0000)。示例:
$ ffmpeg -colors
Colors:
name RGB hex
---- -------
white FFFFFF
red FF0000
green 00FF00
blue 0000FF
yellow FFFF00
...(其他颜色)
颜色空间标识符:
列出 FFmpeg 支持的颜色标准(用于 -colorspace、-color_primaries 等参数):
Color spaces:
bt709 BT.709
smpte170m SMPTE-170M
bt2020 BT.2020
...(其他标准)
常见颜色名称:
颜色名 | 十六进制值 | 示例用途 |
---|---|---|
black | #000000 | 背景填充 |
white | #FFFFFF | 文字颜色 |
red | #FF0000 | 警告标记 |
green | #00FF00 | 成功提示 |
blue | #0000FF | 超链接 |
yellow | #FFFF00 | 高亮文本 |
transparen 特殊值 | 透明背景 |
常见色彩空间标识符:
标识符 | 标准 | 用途 |
---|---|---|
bt709 | BT.709 (Rec.709) | 高清电视(sRGB 相似) |
smpte170m | SMPTE-170M | (BT.601) 标清电视(NTSC/PAL) |
bt2020 | BT.2020 | 超高清/HDR |
rgb | 线性 RGB | 计算机图形 |
使用场景:
在滤镜中使用颜色名称:
# 添加红色文字
ffmpeg -i input.mp4 -vf "drawtext=text='Error':fontcolor=red:x=10:y=10" output.mp4# 创建绿色背景视频
ffmpeg -f lavfi -i "color=c=green:size=640x480" -t 5 green_screen.mp4
指定颜色空间参数:
# 转换视频色彩标准为 BT.709
ffmpeg -i input.mp4 -colorspace bt709 output.mp4# 强制使用 sRGB 色彩原色
ffmpeg -i input.mp4 -color_primaries bt709 output.mp4
透明背景处理(PNG/GIF):
# 生成带透明背景的文字
ffmpeg -f lavfi -i "color=c=black@0.0:size=640x480" -vf "drawtext=text='FFmpeg':fontcolor=white" -frames:v 1 transparent.png
关键点:
- 颜色名称兼容性:
- 支持所有 CSS 颜色名称。
- 十六进制格式支持 3/6/8 位(如 #RGB、#RRGGBB、#RRGGBBAA)。
- 颜色空间转换:
- 错误的空间转换会导致色彩失真(如 BT.601→BT.709)。
- 使用 -vf “colorspace=…” 滤镜可精确控制转换。
- 透明度:
- 格式需支持 Alpha 通道(如 PNG、MOV with PNG codec)。
- 使用 color=black@0.0 表示完全透明。