FFmpeg 编解码器(Codec)详解
FFmpeg 支持数百种编解码器,涵盖视频、音频和字幕。以下是核心分类、常用编解码器及其应用场景的全面解析:
1. 编解码器基础概念
2. 视频编解码器
(1) 常用视频编码器
编码器 | 格式 | 特点 | 适用场景 |
---|
libx264 | H.264 | 高兼容性,平衡画质与体积,支持硬件加速 | 直播、点播、通用视频 |
libx265 | H.265 | 比 H.264 节省 50% 码率,但计算复杂度高 | 4K/HDR、存储受限场景 |
libvpx-vp9 | VP9 | 开源,WebM 格式标准,适合 Web 端 | YouTube、HTML5 视频 |
libaom-av1 | AV1 | 下一代开源编码器,压缩率优于 VP9/H.265 | 未来流媒体、超高清 |
mpeg4 | MPEG-4 | 兼容性好,但压缩效率低 | 老旧设备、简单编辑 |
示例:使用 libx264 编码
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset fast output.mp4
-crf 23
:画质控制(0-51,值越小画质越好)。-preset fast
:编码速度与压缩率的权衡(ultrafast
→ slow
)。
(2) 常用视频解码器
解码器 | 格式支持 | 特点 |
---|
h264 | H.264/AVC | 通用硬件加速解码 |
hevc | H.265/HEVC | 需硬件支持(如 NVIDIA NVENC) |
vp9 | VP9 | 开源,适合 Web 媒体 |
av1 | AV1 | 新兴格式,逐步普及 |
示例:强制使用软件解码
ffmpeg -hwaccel none -i input.mp4 -c:v copy output.mp4
3. 音频编解码器
(1) 常用音频编码器
编码器 | 格式 | 特点 | 适用场景 |
---|
aac | AAC | 高质量,低码率,广泛兼容 | 流媒体、移动设备 |
libmp3lame | MP3 | 兼容性极佳,但效率低于 AAC | 音乐存档、老旧设备 |
opus | Opus | 低延迟,适合语音和实时通信 | WebRTC、游戏语音 |
flac | FLAC | 无损压缩,体积大 | 音乐母带、专业音频 |
示例:编码为 AAC
ffmpeg -i input.mp4 -c:a aac -b:a 128k output.mp4
-b:a 128k
:设置音频码率为 128kbps。
(2) 常用音频解码器
解码器 | 格式支持 | 特点 |
---|
aac | AAC | 通用解码 |
mp3 | MP3 | 兼容所有播放器 |
ac3 | Dolby Digital | 多声道家庭影院 |
4. 硬件加速编解码
(1) 硬件编码器
平台 | 编码器 | 支持格式 |
---|
NVIDIA | nvenc | H.264/H.265 |
Intel | qsv | H.264/H.265 |
AMD | amf | H.264/H.265 |
示例:使用 NVIDIA NVENC 编码
ffmpeg -i input.mp4 -c:v h264_nvenc -preset p7 -cq 23 output.mp4
(2) 硬件解码器
参数 | 作用 |
---|
-hwaccel cuda | 使用 NVIDIA CUDA 加速解码 |
-hwaccel qsv | 使用 Intel Quick Sync Video |
示例:启用硬件解码
ffmpeg -hwaccel cuda -i input.mp4 -c:v copy output.mp4
5. 编解码器选择原则
- 兼容性优先:
- 视频:H.264 + AAC(最广泛支持)。
- 音频:AAC 或 MP3。
- 压缩效率:
- 实时性要求:
- 低延迟场景用
libx264 -preset ultrafast
或硬件编码。
- 开源需求:
6. 查看文件编解码信息
ffprobe -v error -show_streams input.mp4 | grep codec_name
输出示例:
codec_name=h264
codec_name=aac
7. 总结
- 视频编码:
libx264
(通用)、libx265
(高效)、libvpx-vp9
(Web)。 - 音频编码:
aac
(流媒体)、opus
(实时通信)。 - 硬件加速:
nvenc
/qsv
提升编码速度。 - 解码兼容性:优先使用原生解码器(如
h264
)。
通过合理选择编解码器,可平衡画质、体积、兼容性和性能!