如下内容取自官网文档“Documentation-ffmpeg”和“Documentation-ffmpeg-all

1 帮助信息

如下选项适用于 ff 系列工具:

-h, -?, -help, --help [arg]
显示帮助信息。可指定一个可选参数,以显示针对此参数的帮助信息。如果不指定参
数,仅显示基本选项。 可用参数如下: long
打印高级选项 full
打印所有选项,包括编码器、解码器、解复用器、复用器、滤镜等的共享或私有选项。 decoder=decoder_name
打印名为 decoder_name 的解码器的详细信息。
使用 -decoders 选项可获取解码器列表。 encoder=encoder_name
打印名为 encoder_name 的编码器的详细信息。
使用 -encoders 选项可获取编码器列表。 demuxer=demuxer_name
打印名为 demuxer_name 的解复用器的详细信息。
使用 -formats 选项可获取解复用器和复用器列表。 muxer=muxer_name
打印名为 muxer_name 的复用器的详细信息。
使用 -formats 选项可获取解复用器和复用器列表。 filter=filter_name
打印名为 filter_name 的滤镜的详细信息。
使用 -filters 选项可获取滤镜列表。

2 通用选项

如下选项适用于 ff 系列工具:

-L
显示许可证。 -version
显示版本。 -formats
显示可用格式(包含可用设备)。 -demuxers
显示可用的解复用器。 -muxers
显示可用的复用器。 -devices
显示可用的设备。 -codecs
显示 libavcodec 库支持的所有编解码器。编解码器(codec)是一种简称,媒体位流格
式(media bitstream format)是一种更正式和准确的称法。 -decoders
显示可用的解码器。 -encoders
显示可用的编码器。 -bsfs
显示可用的位流滤镜(bitstream filters)。 -protocols
显示可用的协议。 -filters
显示可用的 libavfilter 滤镜。 -pix_fmts
显示可用的视频像素格式。 -sample_fmts
显示可用的音频采样格式。 -layouts
显示声道名称及标准声道布局。 -colors
显示可识别的颜色名。

3 AV 选项

这些选项由 libavformat、libavdevice 及 libavcodec 库直接提供。使用 -help 选项可查看 AV 选项列表。AV 选项有如下两类:

generic:通用选项可用于任意容器、编解码器或设备。容器/设备的通用选项位于 AVFormatContext 中,编解码器的通用选项位于 AVCodecContext 中。

private:私有选项仅用于特定的容器、编解码器或设备。私有选项位于选项对应的容器/设备/编解码器中。

例如要在一个默认为 ID3v2.4 为头的 MP3 文件中写入 ID3v2.3 头,需要使用 MP3 复用器的 id3v2_version 私有选项:

ffmpeg -i input.flac -id3v2_version 3 out.mp3

所有编解码器 AV 选项都是针对某路流的,所以 AV 选项后应跟随 stream_specifer。

注意 -nooption 语法不能被用于 bool 型的 AV 选项,应使用 -option 0/-option 1。

4 主选项

-f fmt (input/output)
强制指定输入或输出文件格式。输入文件的格式通常是自动检测得到,而输出文件的格
式一般是由文件扩展名猜测得到,所以大部分情况下并不需要此选项。 -i url (input)
输入文件 url。 -y (global)
静默覆盖输出文件。 -n (global)
不覆盖输出文件,如果输出文件已存在则立即退出。 -stream_loop number (input)
设置输入流的循环次数。0 表示不循环,-1 表示永久循环。 -c[:stream_specifier] codec (input/output,per-stream)
-codec[:stream_specifier] codec (input/output,per-stream)
作输出选项时用于选择编码器,作输入选项时用于选择解码器,编码器或解码器都是用
于一路或多路流的。参数 codec 是解码器/编码器的名字,或者指定为 copy,用于表
示流不需要重编码。 例如:
ffmpeg -i INPUT -map 0 -c:v libx264 -c:a copy OUTPUT
使用 libx264 编码所有视频流并拷贝所有音频流。 对每路流来说,最后一个匹配的 c 选项起作用,所以
ffmpeg -i INPUT -map 0 -c copy -c:v:1 libx264 -c:a:137 libvorbis OUTPUT
第 2 路视频流使用 libx264 编码,第 138 路音频流使用 libvorbis 编码,所有其他
流直接拷贝。展开说明一下:上述命令行中,有“-c copy”、“-c:v:1 libx264”和
“-c:a:137 libvorbis”三个 c 选项。对第 138 路音频流来说,第一个和第三个选项可
匹配,因此起作用的是第三个选项(命令行中最后一个匹配的选项)。对第 2 路视频流
来说,第一个和第二个选项可匹配,因此起作用的是第二个选项((命令行中最后一个匹
配的选项)。对其他流而言,只能匹配第一个选项。 -t duration (input/output)
作输入选项时,限制输入的时长,即最多只读入 duration 时长的数据。
作输出选项时,达到 duration 时长时就停止写输出。 duration 是时间长度,遵循时长规范,参考 “ffmpeg-utils” 手册中的
“Time duration” 章节。 -to 选项和 -t 选项是互斥的,-t 选项优先。 -to position (input/output)
到达指定 position 位置时停止写输出或读输入。position 是时间刻度,遵循时长规
范,参考 “ffmpeg-utils” 手册中的 “Time duration” 章节。 -to 选项和 -t 选项是互斥的,-t 选项优先。 -fs limit_size (output)
设置文件尺寸限制,单位字节。达到设置值后就不会再写新的数据块了。输出文件尺寸
比请求设置的值略大。 -ss position (input/output)
作输入选项(在 -i 之前)时,将在输入文件中执行 seek 操作,seek 至目标位置
position 处。注意在大多数格式中,seek 都不精确,ffmpeg 会 seek 至离 position
最近的 seek 点。当转码功能和 -accurate_seek 都使能(默认情况)时,在实际 seek
点和 position 间的一小段会被解码,但是会丢弃(如何丢弃?)。在作流拷贝(不需要
转码)操作或使用了 -noaccurate_seek 选项时,这一小段会保留(如何保留?)。 作输出选项(在输出 url 之前)时,会对输入一直解码并丢弃,直到到达 position 位
置处。 position 是时间刻度,遵循时长规范,参考 “ffmpeg-utils” 手册中的
“Time duration” 章节。 -sseof position (input)
与 -ss 选项类似,只不过 -ss 选项是相对于文件头,而此选项是相对于文件尾。
position 值是负值,0 表示位于文件尾。 -itsoffset offset (input)
设置输入时间偏移。 offset 遵循时长规范,参考 “ffmpeg-utils” 手册中的 “Time duration” 章节。 输入文件的时间戳会加上 offset 值,使用相加后的新值作为新的时间戳。offset 取
正值时表示对应的流将延时 offset 指定的时长。 -timestamp date (output)
设置容器中的录制时间戳。 data 遵循日期规范,参考 “ffmpeg-utils” 手册中的 “Date” 章节。 -metadata[:metadata_specifier] key=value (output,per-metadata)
设置一个 metedata 键/值对。一个可选的 metadata_specifier 可用于设置流、章节
或节目的 metadata。详情可参考 -map_metadata 文档。此选项会覆盖 -map_metadata
选项设置的 metadata。此选项携带一个空值可以删除 metadata。 例如,设置输出文件的标题:
ffmpeg -i in.avi -metadata title="my title" out.flv 设置第一路音频流的语言:
ffmpeg -i INPUT -metadata:s:a:0 language=eng OUTPUT ...... -dframes number (output)
设置输出的数据(data 类型,与 video/audio 类型对应)帧的数量。此选项已经过时,
等价于 -frames:d 选项,应使用 -frames:d 替代此选项。 -frames[:stream_specifier] framecount (output,per-stream)
设置输出帧的数量。超过 framecount 帧数时将停止写输出。

5 视频选项

-vframes number (output)
设置输出视频帧数。此选项已经过时,等价于 -frames:v,应使用 -frames:v 替代此
选项。 -r[:stream_specifier] fps (input/output,per-stream)
设置帧率(Hz)。 作输入选项时,忽略文件中的所有时间戳,生成以 fps 为帧率的新时间戳。此选项和
用于某些输入格式(如 image2 和 v412)的-framerate 选项并不一样(在旧的 FFmpeg
版本中这两个选项是一样的)。如果有疑问,使用 -framerate 替换-r 输入选项。 作输出选项时,重复或丢弃输入帧以获得 fps 指定的帧率。 -s[:stream_specifier] size (input/output,per-stream)
设置帧大小。 作输入选项时,此选项是 video_size 私有选项的便捷方式,可被某些解复用器识别,
用于帧大小未存储在文件中或帧大小可配置的情况,例如原始视频或视频采集。 作输出选项时,此选项将在对应滤镜图的末尾插入 scale 视频滤镜,以缩放视频帧,
这种情况请直接使用 scale 滤镜,将 scale 滤镜插入开头或其他位置,而不要使用此
选项。 -aspect[:stream_specifier] aspect (output,per-stream)
设置 aspect 指定的视频显示宽高比。 aspect 可以是浮点数字符串,也可以是 num:den 形式的字符串,其中 num 和 den 分
别是宽高比的分子和分母。例如,“4:3”、“16:9”、“1.3333 ”和 “1.7777 ”都是有效的
参数值。 如果与 -vcodec copy 一起使用,它将影响存储在容器级别的宽高比,但不会影响存储
在编码帧中的宽高比(如果存在的话)。 -vn (input/output)
作输入选项时,阻止文件中所有视频流被用于滤镜操作或自动/手动选择进任何输出。
本选项禁止所有视频流,-discard 选项可单独禁止某一路视频流。 作输出选项时,禁止视频录制,也就是禁止任何视频流的自动或手动选择。 -vcodec codec (output)
设置视频编解码器。等价于 -codec:v 选项。 -pass[:stream_specifier] n (output,per-stream)
用于进行两步视频编码,n 为 1 或 2,表示是第一次或第二次视频编码。第一次编码
时,视频的统计信息会被记录到日志文件中(另见选项 -passlogfile),第二次编码
时,该日志文件会被用来按照准确的比特率生成视频。第一次编码时可以停用音频并将
输出设置为空,如下: ffmpeg -i foo.mov -c:v libxvid -pass 1 -an -f rawvideo -y NUL
ffmpeg -i foo.mov -c:v libxvid -pass 1 -an -f rawvideo -y /dev/null -passlogfile[:stream_specifier] prefix (output,per-stream)
参数 prefix 指定两步视频编码中用到的日志文件名的前缀,默认前缀为 “ffmpeg2pass”。
完整的文件名将是 PREFIX-N.log,其中 N 与输出流的编号相关。 -vf filtergraph (output)
创建由 filtergraph 指定的滤镜图,使用此滤镜图对流执行滤镜操作。本选项等价于
-filter:v 选项, 参考 -filter 选项。

6 音频选项

-ab bitrate 设置音频码率
-ar freq 设置音频采样率
-ac channels 设置通道 缺省为 1
-an 不使能音频纪录
-acodec codec 使用 codec 编解码

7 音频/视频捕获选项

-vd device 设置视频捕获设备。比如/dev/video0
-vc channel 设置视频捕获通道 DV1394 专用
-tvstd standard 设置电视标准 NTSC PAL(SECAM)
-dv1394 设置 DV1394 捕获
-av device 设置音频设备 比如/dev/dsp

8 高级选项

-map file:stream 设置输入流映射
-debug 打印特定调试信息
-benchmark 为基准测试加入时间
-hex 倾倒每一个输入包
-bitexact 仅使用位精确算法 用于编解码测试
-ps size 设置包大小,以 bits 为单位
-re 以本地帧频读数据,主要用于模拟捕获设备
-loop 循环输入流(只工作于图像流,用于 ffserver 测试)

FFmpeg命令行选项的更多相关文章

  1. FFmpeg命令行工具和批处理脚本进行简单的音视频文件编辑

    FFmpeg_Tutorial FFmpeg工具和sdk库的使用demo 一.使用FFmpeg命令行工具和批处理脚本进行简单的音视频文件编辑 1.基本介绍 对于每一个从事音视频技术开发的工程师,想必没 ...

  2. 【Andorid】短视频拍摄SDK——Vitamio Recorder 2.0 发布(支持ffmpeg命令行)

    简介 VCamera SDK Android 版(短视频拍摄SDK)是炫一下(北京)科技有限公司推出的软件开发工具包,为Android开发者提供简单.快捷的接口,帮助开发者实现Android平台上的短 ...

  3. Maven学习(四)Maven 命令行选项

    说明: 1.使用-选项时,和后面的参数之间可以不要空格.而使用--选项时,和后面的参数之    间必须有空格.如下面的例子: $ mvn help:describe -Dcmd=compiler:co ...

  4. 学习笔记——Maven 命令行选项

    2014-10-09:更新裁剪反应堆具体用法 说明: 1.使用-选项时,和后面的参数之间可以不要空格.而使用--选项时,和后面的参数之    间必须有空格.如下面的例子: $ mvn help:des ...

  5. Microsoft Windows Installer 工具 Msiexec.exe 的命令行选项

    摘自:http://support.microsoft.com/kb/314881/zh-cn 概要 本文列出了 Windows Installer 工具 Msiexec.exe 的命令行选项.Msi ...

  6. make的命令行选项

    make的命令行选项 -b -m 忽略,提供其它版本make兼容性. -B --always-make 强制重建所有规则的目标,不根据规则的依赖描述决定是否重建目标文件. -C DIR --direc ...

  7. PhantomJS命令行选项

    支持命令行选项有: --help或-h列出所有可能的命令行选项.立即停止,不会运行一个脚本作为参数传递. --version或-v打印的版本PhantomJS.立即停止,不会运行一个脚本作为参数传递. ...

  8. FFmpeg命令行工具学习(一):查看媒体文件头信息工具ffprobe

    一.简述 ffprobe是ffmpeg命令行工具中相对简单的,此命令是用来查看媒体文件格式的工具. 二.命令格式 在命令行中输入如下格式的命令: ffprobe [文件名] 三.使用ffprobe查看 ...

  9. 【Python】【自动化测试】【pytest】【常用命令行选项】

    https://www.cnblogs.com/cnkemi/p/9989019.html http://www.cnblogs.com/cnkemi/p/10002788.html pytest 常 ...

  10. FFmpeg命令行map参数选择音视频流

    FFmpeg命令行map参数选择音视频流 介绍 -map参数告诉ffmpeg要从输入源中选择/拷贝哪个stream流到输出,可以从输入源中选择多个音视频流作为输出. 不加-map参数,ffmpeg默认 ...

随机推荐

  1. 删除 KubeSphere 中一直卡在 Terminating 的 Namespace

    介绍 最近一直在玩 EKS(Elastic Kubernetes Service -- Amazon EKS) 和 KubeSphere. 因为之前没有使用过 EKS 和 KubeSphere,所以这 ...

  2. 解决ValueError: day is out of range for month的问题

    Bug类型 ValueError: day is out of range for month 解决思路 值错误:天超出了月的范围 解决方法 开始日期要早于结束日期 还有一种是 2月最大为28天,如果 ...

  3. VueJS实现迷糊查询

    原文请查看公共号 前置条件: 开发环境:windows 开发框架:vue2.5 ,vue-cli 4.0+ 编辑器:HbuilderX 兼容版本:vue2.5     Chrome 99.0.4844 ...

  4. 栈与队列(c语言实现)

    文章目录 1.栈 1.1基于数组实现栈 1.1.1定义栈的结构体 1.1.2栈的初始化 1.1.3栈的释放 1.1.4元素入栈 1.1.5元素出栈 1.1.6访问栈顶元素 1.2基于链表实现栈 1.2 ...

  5. C++处理系统相关权限问题

    1.给某个文件或文件夹赋予特定用户的特定访问权限 /* 给文件(夹)szPath设置用户名为pszAccount的可读可写可修改权限 */ bool GiveTheAccountPrivToFile( ...

  6. manim边做边学--圆锥

    Cone是Manim中专门用于创建和操控锥形几何对象的类. Cone允许用户定义锥体的底面半径.高度.颜色.不透明度等属性,并提供了一系列方法来操控这个锥体,如移动.缩放.旋转等. 通过这些属性和方法 ...

  7. Linux系统搭建性能测试监控体系

    一.安装Grafana 1.Grafana介绍(默认端口3000): Grafana是一个开源的监控和可视化工具,用于显示和跟踪各种指标,数据和日志,支持多种源,包括influxDB.promethe ...

  8. 教育账号无法登录OneDrive的一种解决方法

    众所周知,微软的服务总是能出现一些奇奇怪怪的问题,比如说教育账号无法登录OneDrive,尝试使用网上的临时解决方案失败 onedrive学生账号无法登录win10 OneDrive客户端 用户可以在 ...

  9. Solr 4.0 基础教程

    本文只是Solr 4.0的基础教程,本人不经常写东西,写的不好请见谅,欢迎到群233413850进行讨论学习. 转载请标明原文地址:http://my.oschina.net/zhanyu/blog/ ...

  10. Spring IOC、DI、AOP原理和实现

    (1)Spring IOC原理   IOC的意思是控件反转也就是由容器控制程序之间的关系,把控件权交给了外部容器,之前的写法,由程序代码直接操控,而现在控制权由应用代码中转到了外部容器,控制权的转移是 ...