FFmpeg 支持众多的视频格式和编解码器,了解它们的特性对于选择合适的编码方案至关重要。
常见视频容器格式
MP4 (MPEG-4 Part 14)
特点:
- 兼容性极好,几乎所有设备都支持
- 支持多种编解码器(H.264、H.265、AAC 等)
- 适合网络传输和存储
使用场景:网络视频、移动设备、社交媒体
bash# 创建标准 MP4 ffmpeg -i input.avi -c:v libx264 -c:a aac output.mp4 # 创建快速启动 MP4 ffmpeg -i input.mp4 -c:v libx264 -c:a aac -movflags +faststart output.mp4
MKV (Matroska)
特点:
- 开源格式,功能强大
- 支持几乎所有编解码器
- 支持多音轨、多字幕轨道
- 适合存储和收藏
使用场景:高清视频存储、多语言视频
bash# 创建 MKV ffmpeg -i input.mp4 -c:v libx264 -c:a aac output.mkv # 保留所有轨道 ffmpeg -i input.mp4 -c copy output.mkv
AVI (Audio Video Interleave)
特点:
- 老式格式,兼容性好
- 功能相对简单
- 不支持现代编解码器
使用场景:旧设备兼容
bash# 创建 AVI ffmpeg -i input.mp4 -c:v mpeg4 -c:a mp3 output.avi
WebM
特点:
- Google 开发的开源格式
- 专为网络优化
- 支持 VP8、VP9、AV1 编码
- 体积小,质量好
使用场景:Web 视频、HTML5 视频
bash# 创建 WebM ffmpeg -i input.mp4 -c:v libvpx -c:a libvorbis output.webm # 使用 VP9 编码 ffmpeg -i input.mp4 -c:v libvpx-vp9 -c:a libopus output.webm
MOV
特点:
- Apple 开发的格式
- 支持 ProRes 等专业编解码器
- 适合专业视频制作
使用场景:专业视频制作、Apple 设备
bash# 创建 MOV ffmpeg -i input.mp4 -c:v libx264 -c:a aac output.mov # 使用 ProRes 编码 ffmpeg -i input.mp4 -c:v prores_ks -profile:v 3 output.mov
常见视频编解码器
H.264 (AVC)
特点:
- 最广泛使用的视频编码标准
- 兼容性极佳
- 压缩效率中等
- 编码速度快
使用场景:通用视频、网络视频、移动设备
bash# H.264 编码 ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4 # 高质量 H.264 ffmpeg -i input.mp4 -c:v libx264 -crf 18 -preset slow output.mp4 # 快速 H.264 ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset ultrafast output.mp4
H.265 (HEVC)
特点:
- H.264 的继任者
- 压缩效率比 H.264 高 50%
- 编码速度较慢
- 兼容性正在改善
使用场景:4K/8K 视频、高压缩需求
bash# H.265 编码 ffmpeg -i input.mp4 -c:v libx265 -crf 28 output.mp4 # 高质量 H.265 ffmpeg -i input.mp4 -c:v libx265 -crf 23 -preset slow output.mp4
VP9
特点:
- Google 开发的开源编解码器
- 压缩效率接近 H.265
- 完全免费
- 适合 Web 视频
使用场景:Web 视频、YouTube
bash# VP9 编码 ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 output.webm # 高质量 VP9 ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 18 -b:v 0 output.webm
AV1
特点:
- 新一代开源编解码器
- 压缩效率比 H.265 高 30%
- 编码速度慢
- 兼容性有限
使用场景:未来视频、高质量压缩
bash# AV1 编码 ffmpeg -i input.mp4 -c:v libaom-av1 -crf 30 -strict experimental output.webm
ProRes
特点:
- Apple 开发的专业编解码器
- 视觉无损压缩
- 文件较大
- 适合后期制作
使用场景:专业视频制作、后期制作
bash# ProRes 编码 ffmpeg -i input.mp4 -c:v prores_ks -profile:v 3 output.mov # ProRes 422 ffmpeg -i input.mp4 -c:v prores_ks -profile:v 1 output.mov
音频编解码器
AAC
特点:
- 最广泛使用的音频编码
- 兼容性极好
- 质量好,体积小
- 支持多声道
使用场景:通用音频、网络音频
bash# AAC 编码 ffmpeg -i input.wav -c:a aac -b:a 128k output.aac # 高质量 AAC ffmpeg -i input.wav -c:a aac -b:a 256k output.aac
MP3
特点:
- 最流行的音频格式
- 兼容性极佳
- 有损压缩
- 适合音乐
使用场景:音乐、便携设备
bash# MP3 编码 ffmpeg -i input.wav -c:a libmp3lame -b:a 192k output.mp3 # 高质量 MP3 ffmpeg -i input.wav -c:a libmp3lame -b:a 320k output.mp3
Opus
特点:
- 开源音频编解码器
- 质量极佳,延迟低
- 适合语音和音乐
- 体积小
使用场景:网络音频、语音通话
bash# Opus 编码 ffmpeg -i input.wav -c:a libopus -b:a 128k output.opus # 高质量 Opus ffmpeg -i input.wav -c:a libopus -b:a 256k output.opus
FLAC
特点:
- 无损音频压缩
- 质量与原始文件相同
- 文件比 WAV 小
- 适合音乐收藏
使用场景:音乐收藏、无损音频
bash# FLAC 编码 ffmpeg -i input.wav -c:a flac output.flac
格式选择指南
根据使用场景选择
| 场景 | 推荐格式 | 推荐编解码器 |
|---|---|---|
| 网络视频 | MP4 | H.264 + AAC |
| 高清存储 | MKV | H.265 + AAC |
| Web 视频 | WebM | VP9 + Opus |
| 专业制作 | MOV | ProRes |
| 音乐存储 | FLAC | FLAC |
| 移动设备 | MP4 | H.264 + AAC |
根据质量需求选择
高质量:
bashffmpeg -i input.mp4 -c:v libx264 -crf 18 -preset slow -c:a aac -b:a 256k output.mp4
中等质量:
bashffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k output.mp4
低质量(小文件):
bashffmpeg -i input.mp4 -c:v libx264 -crf 28 -preset fast -c:a aac -b:a 96k output.mp4
格式转换
格式互转
bash# MP4 转 MKV ffmpeg -i input.mp4 -c copy output.mkv # AVI 转 MP4 ffmpeg -i input.avi -c:v libx264 -c:a aac output.mp4 # WebM 转 MP4 ffmpeg -i input.webm -c:v libx264 -c:a aac output.mp4
编码器转换
bash# H.264 转 H.265 ffmpeg -i input.mp4 -c:v libx265 -crf 28 output.mp4 # VP9 转 H.264 ffmpeg -i input.webm -c:v libx264 -crf 23 output.mp4
选择合适的格式和编解码器需要考虑兼容性、质量、文件大小和编码速度等多个因素。