FFmpeg命令行选项

news/2024/12/27 11:30:28/文章来源:https://www.cnblogs.com/leisure_chn/p/18635257

如下内容取自官网文档“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 NULffmpeg -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 测试) 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/859756.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【linux合集】单机部署clickhouse--ubuntu环境

clickhouse单机部署--ubuntu部署 导入clickhouse密钥操作 (ClickHouse(大数据分析DBMS)的软件包由其开发人员使用公钥进行签名,我们需要在我们的系统上使用它。这是因为只有我们的系统才能验证我们得到的软件包,它们来自源代码,因为它们是由其开发人员发布的。并且没有被…

欧拉OpenEuler安装xxl-job-admin

1. 安装xxl-job-admin unzip xxl-job-admin.zip ls mv xxl-job-admin-2.4.0/ /home cd /home/ xxl-job-admin-2.4.0/ cd bin/ chmod +x *.sh2. 配置 cd ../conf/ vim application.properties 3.启动 cd ../bin/ sh startup.sh 4. 配置防火墙 firewall-cmd --permanent --add-po…

什么是 单点登录SSO?SSO工作原理

单点登录(SSO)让用户通过一组凭证访问多个应用,简化了多平台登录流程。在没有 SSO 的情况下,用户需为每个应用单独管理用户名和密码,而 SSO 通过身份提供商(IdP)和信任的服务提供商(SP)实现统一认证。这不仅减少了用户的密码管理负担,还降低了 IT 管理员的工作量,提…

K-means算法分析与实践

本文章详解了K-means聚类算法的原理及其优缺点,进行了K-means聚类算法的Python及C++基础实现。一、聚类分析概述定义:根据“物以类聚”原理,将本身尚未归类的样本根据多个维度(属性)聚集成不同的组,这样的一组数据对象的集合叫做簇或群组。经过聚类划分后的群组特性目标:…

(五).NET6.0使用Serilog进行配置和实现日志记录

1.首先安装Serilog六件套神装包也可以对个别相应的包进行删除等,例如:1是读取配置文件的,如果不需要通过配置文件进行操作,就可以不使用这个包。2是打印到控制台的,如果不需要打印到控制台,也可以不引用。3是写入到文件的,如果不需要写入到文件,也是可以不提供的。我在…

简洁的带缩略图的jquery焦点图特效

这是一款简洁的带缩略图的jquery焦点图特效。该焦点图使用无序列表来作为轮播图片结构,通过CSS来进行布局,然后使用简单的jquery代码来控制焦点图的切换。在线预览 下载使用方法 在页面中引入jquery。<script src="path/to/jquery.min.js" type="text/j…

(四).NET6.0程序部署到Docker上

1.确保安装Docker2.把需要部署到Docker上面的项目,咱们先添加Docker的支持,启动项目右键 -> 添加 -> Docker支持,选择 Linux然后会自动生成Dockerfile文件,在里面可以看见Docker有关的配置信息。3.对Dokcerfile的配置文件做一些更改4.然后修改dockerfile文件的属性5.…

(二).NET6.0使用Filter过滤器

1、创建一个webapi方法2、创建过滤器,继承自Attribute, IAsyncActionFilter 不存在需要先手动引用有关的包:Microsoft.AspNetCore.Mvc 继承 Attribute 是为了让 你定义的Filter 成为一个自定义特性,使其能够通过特性语法 [XXXFilter] 应用到控制器或方法上,从而为它们添加元…

欧拉OpenEuler安装tomcat

1. 安装tomcat unzip tomcat.zip mv tomcat /home/ cd /home/tomcat chmod +x *.sh cd bin chmod +x *.sh/home/tomcat下 三个sh 进行启动关闭 2. 开web端口 firewall-cmd --list-ports firewall-cmd --permanent --add-port=9090/tcp firewall-cmd --reload.zstitle { width:…

Java编程规范-processXXX()和handleXXX()的区别

Java 编程规范 类名、接口名: 类名和接口名应该是名词,首字母大写,采用驼峰命名法。例如:CustomerData,OrderProcessor。 方法名: 方法名应该是动词,首字母小写,采用驼峰命名法。例如:calculateTotal,processOrder。 变量名: 变量名应该清晰、描述性强,首字母小写,…

欧拉OpenEuler安装Tengine

1. 安装tengine tar -zxvf tengine-3.1.0.tar.gz cd tengine-3.1.0/ yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel chmod +x *.sh ./configure --prefix=/home/nginx --with-http_gzip_static_module --with-http_realip_module --with-http_stub_st…

旅行团转型的关键一步:利用管理软件提升客户体验与运营效率

一、旅行团行业的现状与挑战 1.1 行业现状 传统旅行团通常由旅行社组织,服务内容包括交通、住宿、餐饮、景点门票等一站式服务。随着旅游市场需求的多样化和个性化,传统的“大而全”的旅行团形式已经不能完全满足消费者的需求。消费者越来越注重旅行体验的个性化,尤其是年轻…