首页 > 其他分享 >FFmpeg命令行选项

FFmpeg命令行选项

时间:2024-12-27 11:29:59浏览次数:7  
标签:选项 FFmpeg stream 设置 命令行 input output 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,stream,设置,命令行,input,output,ffmpeg
From: https://www.cnblogs.com/leisure_chn/p/18635257

相关文章

  • 使用 FFmpeg 和 VLC 在 C# 中构建 RTSP 摄像头分屏监控应用
    随着安防监控技术的不断进步,RTSP(Real-TimeStreamingProtocol)逐渐成为网络摄像头视频流的标准协议。通过RTSP协议,我们可以实时获取来自摄像头的视频流,并通过应用程序进行播放和显示。在多摄像头监控场景中,用户通常希望能够将多个摄像头的视频流同时显示在同一屏幕上,即实现......
  • 命令行之巅:Linux Shell编程的至高艺术(上)
    文章一览前言一、shell概述1.1shell的特点和类型1.1.1**shell的特点:**1.1.2常用shell类型1.2shell脚本的建立和执行1.2.1建立shell脚本1.2.2执行shell脚本的方式1.2.3shell程序实例二、shell变量与算数运算2.1简单shell变量2.1.1简单变量定义和赋值2.1.2引......
  • 命令行之巅:Linux Shell编程的至高艺术(下)
    文章一览前言一、程序控制结构1.1if语句1.2条件测试**测试语句应用:**1.3while语句例:斐波那契数列得前n项和1.4until语句1.5for语句1.5.1值表方式1.5.2算术表达式方式例:打印图案1.6case语句1.7break、continue和exit命令二、shell函数和内置命令2.1shel......
  • 谷歌浏览器“你使用的是不受支持的命令行标志:--no-sandbox。这会带来稳定性和安全风
    沙盒(Sandbox)Chrome中的每一个标签页都是一个沙盒(sandbox),以“防止恶意软体自行执行安装”或“利用一个分页影响其他的分页”。Chrome浏览器会默认开启沙盒,可以拦截利用该漏洞发起的攻击。“隐私沙盒”的使命是“创建一个尊重用户以及默认隐私保护的繁荣网络生态系统”。第三......
  • 使用ffmpeg压缩视频
    下载下载地址:https://www.gyan.dev/ffmpeg/builds/这2个下载哪个个都可以配置环境变量查看视频信息ffmpeg-i112.mp4会输出以下信息Stream#0:0[0x1](und):Video:h264(High)(avc1/0x31637661),yuv420p(tv,bt709,progressive),1920x1080[SAR1:1DAR16:9],......
  • 掌握Linux命令行的艺术:从入门到精通
    本章目录掌握Linux命令行的艺术:从入门到精通3.1终端介绍与常用命令终端是什么?常用命令速览3.2文件与目录操作文件操作命令目录操作命令文件操作示例图3.3用户与权限管理查看权限修改权限更改所有者创建新用户3.4文本处理工具3.5管道与重定向管道示例重定向示例3......
  • 打印三角形金字塔 、debug、java的方法、命令行传参、可变参数20241225
    打印三角形金字塔debug20241225packagecom.pangHuHuStudyJava.struct;publicclassPrint_Tran{publicstaticvoidmain(String[]args){for(intj=0;j<5;j++){for(intr=5;r>j;r--){System.out.print(&#......
  • Linux常用选项之tr命令详解
    tr(translate)是Linux系统中一个非常实用的命令行工具,主要用于字符转换或删除操作。它从标准输入读取数据,执行指定的转换处理,并将结果输出到标准输出。tr命令的主要功能包括但不限于大小写转换、删除特定字符、压缩重复字符等。功能与特性字符替换:可以将一组字符替换成另一......
  • Windows 11 系统右键菜单默认显示全部选项的方法(亲测有效)
    本章目录:win11中默认右键效果如下:修改后效果如下:Win+R输入CMD打开终端:复制下方命令:输入终端:==重点:重启资源管理器,非常重要(参考其它教程都没有这一步)==输入终端:返回桌面,试验效果如下:win11中默认右键效果如下:修改后效果如下:Win+R输入CMD打开终端......
  • ffmpeg滤镜命令集合
    ffmpeg滤镜filter详解:https://zhuanlan.zhihu.com/p/519922289FFmpeg是一个强大的工具,用于处理、转换、编辑和播放各种音频和视频格式。它的滤镜系统允许用户对多媒体文件进行各种转换和处理。以下是一些常用的FFmpeg滤镜:scale-改变视频的尺寸。例如,将视频缩放到1280x......