FFmpeg 以其高度灵活而著称,但这种灵活性同时也带来了显著的学习成本。对于初学者而言,最常见的困惑并不在于“不会写命令”,而在于不清楚参数从何而来、参数之间如何分类、哪些参数属于通用语义,哪些又是特定模块的私有能力。
FFmpeg 的参数体系具有以下特点:
• 参数集合依赖于编译配置与启用的第三方库
• 编码器、解码器、滤镜各自拥有独立的私有参数
• 不同 FFmpeg 版本会新增、弃用或调整参数
因此,理解 FFmpeg 参数的正确方式,是掌握其参数分类逻辑,并学会通过命令行自行查询当前环境下的完整参数集。
1. 查看命令参数
在使用 FFmpeg 前,首先应掌握如何查询参数本身。
(1)查看当前可用参数总览
ffmpeg -h该命令用于查看当前版本下的常用参数摘要,适合快速查阅。
(2)查看完整高级参数
ffmpeg -h full该命令会输出完整参数列表,包括高级选项与内部参数,是排查复杂问题时的重要工具。
(3)查看某个编码器的全部私有参数
ffmpeg -h encoder=libx264不同编码器拥有各自的私有参数,此命令用于查看指定编码器的完整配置项。
(4)查看滤镜的完整参数
ffmpeg -h filter=scaleffmpeg -h filter=aresample滤镜是 FFmpeg 参数体系中最为复杂的部分,必须按滤镜名称单独查询。
2. 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 才能真正成为稳定、可控、可预期的多媒体基础设施工具。
“点赞有美意,赞赏是鼓励”
热门跟贴