FFmpeg命令行选项
如下内容取自官网文档“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命令行选项的更多相关文章
- FFmpeg命令行工具和批处理脚本进行简单的音视频文件编辑
FFmpeg_Tutorial FFmpeg工具和sdk库的使用demo 一.使用FFmpeg命令行工具和批处理脚本进行简单的音视频文件编辑 1.基本介绍 对于每一个从事音视频技术开发的工程师,想必没 ...
- 【Andorid】短视频拍摄SDK——Vitamio Recorder 2.0 发布(支持ffmpeg命令行)
简介 VCamera SDK Android 版(短视频拍摄SDK)是炫一下(北京)科技有限公司推出的软件开发工具包,为Android开发者提供简单.快捷的接口,帮助开发者实现Android平台上的短 ...
- Maven学习(四)Maven 命令行选项
说明: 1.使用-选项时,和后面的参数之间可以不要空格.而使用--选项时,和后面的参数之 间必须有空格.如下面的例子: $ mvn help:describe -Dcmd=compiler:co ...
- 学习笔记——Maven 命令行选项
2014-10-09:更新裁剪反应堆具体用法 说明: 1.使用-选项时,和后面的参数之间可以不要空格.而使用--选项时,和后面的参数之 间必须有空格.如下面的例子: $ mvn help:des ...
- Microsoft Windows Installer 工具 Msiexec.exe 的命令行选项
摘自:http://support.microsoft.com/kb/314881/zh-cn 概要 本文列出了 Windows Installer 工具 Msiexec.exe 的命令行选项.Msi ...
- make的命令行选项
make的命令行选项 -b -m 忽略,提供其它版本make兼容性. -B --always-make 强制重建所有规则的目标,不根据规则的依赖描述决定是否重建目标文件. -C DIR --direc ...
- PhantomJS命令行选项
支持命令行选项有: --help或-h列出所有可能的命令行选项.立即停止,不会运行一个脚本作为参数传递. --version或-v打印的版本PhantomJS.立即停止,不会运行一个脚本作为参数传递. ...
- FFmpeg命令行工具学习(一):查看媒体文件头信息工具ffprobe
一.简述 ffprobe是ffmpeg命令行工具中相对简单的,此命令是用来查看媒体文件格式的工具. 二.命令格式 在命令行中输入如下格式的命令: ffprobe [文件名] 三.使用ffprobe查看 ...
- 【Python】【自动化测试】【pytest】【常用命令行选项】
https://www.cnblogs.com/cnkemi/p/9989019.html http://www.cnblogs.com/cnkemi/p/10002788.html pytest 常 ...
- FFmpeg命令行map参数选择音视频流
FFmpeg命令行map参数选择音视频流 介绍 -map参数告诉ffmpeg要从输入源中选择/拷贝哪个stream流到输出,可以从输入源中选择多个音视频流作为输出. 不加-map参数,ffmpeg默认 ...
随机推荐
- 删除 KubeSphere 中一直卡在 Terminating 的 Namespace
介绍 最近一直在玩 EKS(Elastic Kubernetes Service -- Amazon EKS) 和 KubeSphere. 因为之前没有使用过 EKS 和 KubeSphere,所以这 ...
- 解决ValueError: day is out of range for month的问题
Bug类型 ValueError: day is out of range for month 解决思路 值错误:天超出了月的范围 解决方法 开始日期要早于结束日期 还有一种是 2月最大为28天,如果 ...
- VueJS实现迷糊查询
原文请查看公共号 前置条件: 开发环境:windows 开发框架:vue2.5 ,vue-cli 4.0+ 编辑器:HbuilderX 兼容版本:vue2.5 Chrome 99.0.4844 ...
- 栈与队列(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 ...
- C++处理系统相关权限问题
1.给某个文件或文件夹赋予特定用户的特定访问权限 /* 给文件(夹)szPath设置用户名为pszAccount的可读可写可修改权限 */ bool GiveTheAccountPrivToFile( ...
- manim边做边学--圆锥
Cone是Manim中专门用于创建和操控锥形几何对象的类. Cone允许用户定义锥体的底面半径.高度.颜色.不透明度等属性,并提供了一系列方法来操控这个锥体,如移动.缩放.旋转等. 通过这些属性和方法 ...
- Linux系统搭建性能测试监控体系
一.安装Grafana 1.Grafana介绍(默认端口3000): Grafana是一个开源的监控和可视化工具,用于显示和跟踪各种指标,数据和日志,支持多种源,包括influxDB.promethe ...
- 教育账号无法登录OneDrive的一种解决方法
众所周知,微软的服务总是能出现一些奇奇怪怪的问题,比如说教育账号无法登录OneDrive,尝试使用网上的临时解决方案失败 onedrive学生账号无法登录win10 OneDrive客户端 用户可以在 ...
- Solr 4.0 基础教程
本文只是Solr 4.0的基础教程,本人不经常写东西,写的不好请见谅,欢迎到群233413850进行讨论学习. 转载请标明原文地址:http://my.oschina.net/zhanyu/blog/ ...
- Spring IOC、DI、AOP原理和实现
(1)Spring IOC原理 IOC的意思是控件反转也就是由容器控制程序之间的关系,把控件权交给了外部容器,之前的写法,由程序代码直接操控,而现在控制权由应用代码中转到了外部容器,控制权的转移是 ...