FFmpeg 以其高度灵活而著称,但这种灵活性同时也带来了显著的学习成本。对于初学者而言,最常见的困惑并不在于“不会写命令”,而在于不清楚参数从何而来、参数之间如何分类、哪些参数属于通用语义,哪些又是特定模块的私有能力。

FFmpeg 的参数体系具有以下特点:

• 参数集合依赖于编译配置与启用的第三方库

• 编码器、解码器、滤镜各自拥有独立的私有参数

• 不同 FFmpeg 版本会新增、弃用或调整参数

因此,理解 FFmpeg 参数的正确方式,是掌握其参数分类逻辑,并学会通过命令行自行查询当前环境下的完整参数集。

1. 查看命令参数

在使用 FFmpeg 前,首先应掌握如何查询参数本身。

(1)查看当前可用参数总览

ffmpeg -h

该命令用于查看当前版本下的常用参数摘要,适合快速查阅。

(2)查看完整高级参数

ffmpeg -h full

该命令会输出完整参数列表,包括高级选项与内部参数,是排查复杂问题时的重要工具。

(3)查看某个编码器的全部私有参数

ffmpeg -h encoder=libx264

不同编码器拥有各自的私有参数,此命令用于查看指定编码器的完整配置项。

(4)查看滤镜的完整参数

ffmpeg -h filter=scale

ffmpeg -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 才能真正成为稳定、可控、可预期的多媒体基础设施工具。

打开网易新闻 查看精彩图片

点赞有美意,赞赏是鼓励