FFmpeg 以其高度灵活而著称,但这种灵活性同时也带来了显著的学习成本。对于初学者而言,最常见的困惑并不在于"不会写命令",而在于不清楚参数从何而来、参数之间如何分类、哪些参数属于通用语义,哪些又是特定模块的私有能力。
FFmpeg 的参数体系具有以下特点:
• 参数集合依赖于编译配置与启用的第三方库
• 编码器、解码器、滤镜各自拥有独立的私有参数
• 不同 FFmpeg 版本会新增、弃用或调整参数
因此,理解 FFmpeg 参数的正确方式,是掌握其参数分类逻辑,并学会通过命令行自行查询当前环境下的完整参数集。
- 查看命令参数
在使用 FFmpeg 前,首先应掌握如何查询参数本身。
(1)查看当前可用参数总览
nginx
ffmpeg -h
该命令用于查看当前版本下的常用参数摘要,适合快速查阅。
(2)查看完整高级参数
nginx
ffmpeg -h full
该命令会输出完整参数列表,包括高级选项与内部参数,是排查复杂问题时的重要工具。
(3)查看某个编码器的全部私有参数
nginx
ffmpeg -h encoder=libx264
不同编码器拥有各自的私有参数,此命令用于查看指定编码器的完整配置项。
(4)查看滤镜的完整参数
nginx
ffmpeg -h filter=scale
nginx
ffmpeg -h filter=aresample
滤镜是 FFmpeg 参数体系中最为复杂的部分,必须按滤镜名称单独查询。
- FFmpeg 命令参数详解
(1)全局参数
| 参数 | 英文全称 | 中文说明 |
|---|---|---|
-version |
Version | 显示 FFmpeg 版本信息 |
-formats |
Formats | 列出支持的封装格式 |
-codecs |
Codecs | 列出全部编解码器 |
-encoders |
Encoders | 列出可用编码器 |
-decoders |
Decoders | 列出可用解码器 |
-filters |
Filters | 列出所有滤镜 |
-devices |
Devices | 列出输入 / 输出设备 |
-hwaccels |
Hardware Accelerations | 列出硬件加速方式 |
-loglevel |
Log Level | 设置日志输出级别 |
-hide_banner |
Hide Banner | 隐藏启动版权信息 |
-y |
Yes | 自动覆盖输出文件 |
-n |
No | 禁止覆盖输出文件 |
(2)输入/输出通用参数
| 参数 | 英文全称 | 中文说明 |
|---|---|---|
-i |
Input | 指定输入文件 |
-f |
Format | 强制指定封装格式 |
-map |
Stream Mapping | 显式指定流映射关系 |
-shortest |
Shortest Stream | 以最短流长度结束 |
-copyts |
Copy TimeStamp | 保留原始时间戳 |
-start_at_zero |
Start At Zero | 时间戳从 0 开始 |
(3)视频参数
| 参数 | 英文全称 | 中文说明 |
|---|---|---|
-c:v |
Codec: Video | 指定视频编码器 |
-vn |
Video None | 禁用视频流 |
-r |
Frame Rate | 设置视频帧率 |
-s |
Size | 设置分辨率 |
-aspect |
Aspect Ratio | 设置宽高比 |
-pix_fmt |
Pixel Format | 设置像素格式 |
-profile:v |
Profile: Video | 编码 Profile |
-level:v |
Level: Video | 编码 Level |
-b:v |
Bitrate: Video | 视频码率 |
-maxrate |
Maximum Bitrate | 最大码率 |
-bufsize |
Buffer Size | 码率缓冲区大小 |
-g |
GOP Size | 关键帧间隔 |
-keyint_min |
Keyframe Interval Minimum | 最小关键帧间隔 |
(4)音频参数
| 参数 | 英文全称 | 中文说明 |
|---|---|---|
-c:a |
Codec: Audio | 指定音频编码器 |
-an |
Audio None | 禁用音频流 |
-ac |
Audio Channels | 设置声道数 |
-ar |
Audio Rate | 设置采样率 |
-b:a |
Bitrate: Audio | 音频码率 |
-sample_fmt |
Sample Format | 采样格式 |
-af |
Audio Filter | 音频滤镜 |
(5)字幕参数
| 参数 | 英文全称 | 中文说明 |
|---|---|---|
-c:s |
Codec: Subtitle | 指定字幕编码器 |
-sn |
Subtitle None | 禁用字幕流 |
-map 0:s:0 |
Stream Mapping: Subtitle | 映射字幕流 |
-scodec |
Subtitle Codec | 字幕编码格式 |
(6)时间控制与裁剪
| 参数 | 英文全称 | 中文说明 |
|---|---|---|
-ss |
Start Seek | 设置起始时间 |
-to |
Time Out | 设置结束时间 |
-t |
Duration Time | 指定持续时长 |
-itsoffset |
Input Time Offset | 输入时间偏移 |
(7)流复制与同步控制
| 参数 | 英文全称 | 中文说明 |
|---|---|---|
-c copy |
Codec Copy | 复制流,不重新编码 |
-copy_unknown |
Copy Unknown Streams | 复制未知流 |
-re |
Read at Native Rate | 按实时速率读取 |
(8)滤镜系统参数
| 参数 | 英文全称 | 中文说明 |
|---|---|---|
-vf |
Video Filter | 视频滤镜 |
-af |
Audio Filter | 音频滤镜 |
-filter_complex |
Complex Filtergraph | 复杂滤镜图 |
-lavfi |
Libavfilter | 使用滤镜作为输入 |
(9)硬件加速相关参数
| 参数 | 英文全称 | 中文说明 |
|---|---|---|
-hwaccel |
Hardware Acceleration | 指定硬件加速方式 |
-hwaccel_device |
Hardware Device | 指定硬件设备 |
-hwaccel_output_format |
Hardware Output Format | 硬件输出格式 |
h264_nvenc |
NVIDIA Encoder | NVIDIA 硬件编码 |
h264_qsv |
Quick Sync Video | Intel QSV 编码 |
h264_vaapi |
Video Acceleration API | Linux VAAPI 编码 |
(10)调试与分析参数
| 参数 | 英文全称 | 中文说明 |
|---|---|---|
-report |
Report | 生成详细日志 |
-benchmark |
Benchmark | 输出性能统计 |
-stats |
Statistics | 显示处理进度 |
-debug |
Debug Mode | 调试输出 |
📘 小结
FFmpeg 的参数体系并非简单的"命令选项集合",而是一套围绕流(Stream)、编解码器、滤镜与封装格式构建的完整控制语言。
理解参数的分类逻辑,比死记具体参数更为重要。
在实际工程与 AI 音视频处理场景中,应遵循以下原则:
先用查询命令理解当前环境支持的能力,再根据数据目标选择必要参数组合。
只有在理解语义的前提下使用参数,FFmpeg 才能真正成为稳定、可控、可预期的多媒体基础设施工具。

"点赞有美意,赞赏是鼓励"