简介与其他资料:
- http://www.5i01.cn/topicdetail.php?f=510&t=3734550
FFmpeg 常用选项功能说明
由于 FFmpe 功能太庞大了,
所以以下只节录一些常用选项的说明,
如果需要更详细的说明,请查询 ffmpeg Documentation。
基本用法
取得输入档案资讯
如果你要取得输入档案资讯,可以使用以下命令:
ffmpeg -hide_banner -i 输入档案
※-hide_banner 可以隐藏不必要的多余讯息
输入/输出设定
基本规则:
ffmpeg [选项] [[输入选项] -i 输入档案]... {[输出选项] 输出档案}...
部分选项可以用来作为输入设定,也可以作为输出设定
位于 -i
输入档案 之前则为
输入档案 的输入设定,位于
输出档案 之前则为输出设定
-c[:
串流说明符]
编解码器 (输入/输出)
-f
多工(解讯)器 (输入/输出)
所在位置会影响它们的功能:
ffmpeg -hide_banner -c:v 视讯解码器 -c:a 音讯解码器 -f 多工解讯器 -i 输入档 -c:v 视讯编码器 -c:a 音讯编码器 -f 多工器 输出档
通常不需要手动指定 解码器 (Decoder)、多工解讯器 (Demuxer),因为 ffmpeg 会依输入自动判断
也不需要手动指定 多工器 (Muxer),ffmpeg 会依输出副档名自动判断
额外的函式库 (External Libraries)
如果你需要的 Codec 名称是 lib 开头
必须确认 ffmpeg 是否有所需的 lib,以 FDK AAC 为例
ffmpeg -version
检查 configuration 里是否有 --enable-libfdk-aac
依此类推, x264 编码器,就是 --enable-libx264
串流选取 (Stream selection)
如果你需要挑选输入串流,你可以使用下列选项
-vn
禁用视讯输出。
-an
禁用音讯输出。
-sn
禁用字幕输出。
-map
输入档案索引:
串流说明符
挑选输入串流。
详细说明请见以下连结:
http://www.5i01.cn/topicdetail.php?f=510&t=4200388
选项 (Options)
串流说明符 (Stream specifiers)
有些选项应用于每个串流,例如位元率或编解码器。串流说明符被用来精准的指定一个给定的选项属于哪些串流。
串流说明符可用下列组合:
串流索引
匹配串流的索引。"1" 即代表第2个串流。
串流类型[:
串流索引]
串流类型为以下之一: v 代表视讯 (video), a 代表音讯 (audio), s 代表字幕 (subtitle), d 代表资料 (data), t 代表附件 (attachments )。例如 -b:a:0 128k 即设定第1个音讯串流的输出位元率为128kbps。若无指定串流索引则代表全部该类型串流,例如 -c:s copy 即复制全部字幕串流至输出档案内。
第3输出轨的位元率为 640kbps
-b:2 640k
全部输出音轨使用 libfdk_aac 重新编码
-codec:a libfdk_aac
第2输出音轨使用混合为6声道
-ac:a:1 6
一般选项 (Generic options)
常用选项:
-L
授权条款
-h, -?, -help, --help [
参数]
显示说明,如果没有参数则显示基本说明。
可用参数如下:
long
显示更多选项
full
显示全部选项 (包括所有格式和编解码器特定的选项
decoder=
解码器
显示指定解码器(decoder)讯息
encoder=
编码器
显示指定编码器(encoder)讯息
demuxer=
多工解讯器
显示指定多工解讯器(demuxer)讯息
muxer=
多工器
显示指定多工器(muxer)讯息
filter=
筛选器
显示指定筛选器(filter)讯息
-version
显示版本讯息
-formats
列出可用档案格式
-coders
列出可用的编解码器
-decoders
列出可用的解码器
-encoders
列出可用的编码器
如果编解码器是实验性质,例如原生 AAC 编码器
必须加上 "-strict experimental" 或 "-strict -2" 才能解锁功能
-decoders
列出所有的解码器
-filters
列出可用的筛选器
-pix_fmts
列出可用的像素格式
-sample_fmts
列出可用的取样格式
-report
倾印完整命列与控制台输出至目前目录下一个名为 program-YYYYMMDD-HHMMSS.log 的档案。
-hide_banner
所有FFmpeg的工具通常会显示版权声明,建置(build)选项和程式库(library)版本。这个选项可以用来隐藏这些讯息。
主要选项 (Main options)
常用选项:
-f
多工解讯器 或
多工器 (输出/输入)
设定多工(解讯)器。
通常不需要用到此选项,因为 ffmpeg 会依据输出/入副档名自动判断。
可用档案格式表单 见 -fromats
-codec[:
串流说明符]
编解码器 (输出/输入,每个串流)
-c[:
串流说明符]
编解码器 (输出/输入,每个串流)
设定编解码器 (Codec)。"copy" 为复制串流。
编解码器表单 见 -encoders, -decoders
编解码器说明 见 -h encoder=
编码器名称, -h decoder=
解码器名称
-i
档案 (输入)
设定输入档案。
-y (global)
当输出档案存在时,不询问是否复盖,直接复盖输出档。
-n (global)
当输出档案存在时,不询问是否复盖,直接结束离开。
-ss
时间码 (输出/输入)
选项为指定开时时间。时间码格式为 六十进制 (hh:mm:ss[.xxx]) 或秒数。
当作为输入选项(位于 -i 之前)时,将会定位/跳转(seek)到指定时间点并归零的当前时间戳记。
当作为输出选项(位于 -i 之后)时,将会将会从头开始解码(并丢弃)到达指定时间点。
-t
时间码 (输出/输入)
选项为指定持续时间。时间码格式为 六十进制 (hh:mm:ss[.xxx]) 或秒数。
-to
时间码 (输出/输入)
停止写入输出在此时间点。时间码格式为 六十进制 (hh:mm:ss[.xxx]) 或秒数。
-target
类型 (输出)
指定目标档案类型。
'vcd, svcd, dvd, dv, dv50'
而类型可带以下这些前辍,来使用相对应的标准。
'ntsc-, pal-, film-'
全部的输出格式选项 (编码器、位元率、缓冲) 将被自动设定为符合指定的类型。
例如 NTSC DVD-Video
ffmpeg -i input.mkv -target ntsc-dvd output.mpg
音讯选项 (Audio options)
常用选项:
-an (输出)
禁用音讯输出/入。
-acodec
音讯编码器 (输出)
设定音讯编码器。"copy" 为复制音讯串流。
此选项已过于老旧,建议改用新选项 -codec/-c
-ar[:
串流说明符]
频率 (输出/输入,每个串流)
重新取样 (resample) 音讯,单位为 Hz。重新取样成 48kHz: -ar 48000
需要详细设定请改用 aresample filter。
-ac[:
串流说明符]
声道数 (输出/输入,每个串流)
缩混 (downmix) 音讯的声道。例如 5.1 -ac 6 。需要详细设定请改用 pan filter。
可用值: 0, 1, 2, 4, 5, 6, 8
-async
每秒取样数量 (输出)
音讯同步方法。"伸展/挤压"音讯串流去匹配时间戳记 (TimeStamp),该参数是音讯每秒最大的改变取样。-async 1 是一个特殊的 case 只会校正音讯串流的开头而之后的都不会。默认值是 0,因此不会做处里。
此选项已被弃用。使用 aresample 音讯 filter 代替。
-af
filtergraph (输出)
-filter[:
串流说明符]
filtergraph (输出,每个串流)
见下文
Filter。
视讯选项 (Video options)
常用选项:
-vn (输出)
禁用视讯输出。
-vcodec
视讯编码器 (输出)
设定视讯编码器。"copy" 为复制视讯串流。
此选项已过于老旧,建议改用新选项 -codec/-c
-r[:
串流说明符]
划格率 (输出/输入,每个串流)
设定视讯的划格率 (frame rate,单位为 Hz 或 fps,分数 或 缩写)。
例如: -r 23.976 或 -r 24000/1001
-aspect[:
串流说明符]
比例 (输出,每个串流)
设定视讯的显示宽高比。需要详细设定请改用 setdar 或 stesar filter。
例如: -aspect 1.77778 或 -aspect 16:9
-vsync
参数
视讯同步方法。
参数:
0, passthrough
不改变划格的时间戳记。
1, cfr
复制划格或删除划格,使输出为 恒定划格率 (CFR)。
2, vfr
不改变划格的时间戳记,但移除重复时间戳记的划格。
drop
破坏原本的时间戳记,以指定的 fps 为基础产生新的时间戳记。
-1, auto
根据 muxer 自动选择 1 或 2。
-vf
filtergraph (输出)
-filter[:
串流说明符]
filtergraph (输出,每个串流)
见下文
筛选器 (Filter)。
字幕选项 (Subtitle options)
常用选项:
-sn (输出)
禁用字幕输出/入。
-scodec
字幕格式 (输出)
设定字幕格式 (Subtitle Format)。"copy" 为复制字幕串流。
此选项已过于老旧,建议改用新选项 -codec/-c
编解码器选项 (Codec options)
如果要精准的指定一个给定的选项属于哪些串流,
你可以使用串流说明符。
规则:
-
选项名[:
串流说明符] [
设定值]
例如: 设定全部音讯串流皆转换为 AC3 640kbps
ffmpeg -i input.mkv -c:v copy -c:a ac3 -b:a 640k output.mkv
常用选项:
b
位元率 (编码,视讯,音讯)
设定串流的位元率 (bitrate),单位为 位元/秒 (bps, bits/sec)。
例如设定为 640kbps,设定值即 640k 或 640000
qscale
品质 (编码,视讯,音讯)
q
品质 (输出,每个串流)
设定串流品质 (Variable Bit Rate 模式)。
某些编码器必须使用专用选项,见该编码器说明。
profile
Profile (编码,视讯,音讯)
设定输出串流的 Profile。见编码器说明 -h encoder=
编码器名称。
minrate
位元率 (编码,视讯,音讯)
设定最小流量容许值 (每秒位元)。用处不多,最大用处是用来建立 CBR 编码。
例如设定为 640kbps,设定值即 640k 或 640000
maxrate
位元率 (编码,视讯,音讯)
设定最大流量容许值 (每秒位元)。bufsize 需要被设定。
例如设定为 640kbps,设定值即 640k 或 640000
bufsize
位元值 (编码,视讯,音讯)
设定流量控制缓冲区大小 (位元)。
例如设定为 640kbits,设定值即 640k 或 640000
level
等级 (编码,视讯,音讯)
设定输出编码等级。见编码器说明 -h encoder=
编码器名称。
pix_fmt
格式 (编码,视讯)
转换像素格式。
像素格式表单 见 -pix_fmts
keyint_min
整数 (编码,视讯)
设定 GOP 最小值, 即 IDR-frames (keyframes) 最短间格。
g
整数 (编码,视讯)
设定 GOP 最大值,即 IDR-frames (keyframes) 最长间格。
refs
整数 (编码,视讯)
设定参考划格数 (reference frames)。
bf
整数 (编码,视讯)
设定 B-Frames 最大连续数量。
cutoff
整数 (编码,音讯)
设定截止频宽。这将会过滤掉高于设定值的频率。
编解码器 (Codec)
查询编解码器讯息
如果要列出全部的编码器或解码器,则可用使以下命令:
-coders
列出所有的编解码器
-decoders
列出所有的解码器
-encoders
列出所有的编码器
由于 FFmpeg 的编码器或解码器数量非常多,
萤幕缓冲区可能会不够用,将无法看到完整的内容。
为了避免这问题,建议将 FFmpeg 输出 Log 写入 TXT 档。
CMD:
ffmpeg -coders > list.txt
如果要查询某一编码器或解码器的可用命令,则可用使以下命令:
-h encoder=
编码器名称
显示指定编码器讯息
-h decoder=
解码器名称
显示指定解码器讯息
呼叫编解码器
如要呼叫编码器或解码,则可用使以下命令:
-codec[:
串流说明符]
编解码器
-c[:
串流说明符]
编解码器
指定编码器来重新编码
串流说明符所指的串流
-vcodec
视讯编解码器
等同: -coddec:a, -c:v
视讯编码器
-acodec
音讯编解码器
等同: -coddec:a, -c:a
音讯编码器
-scodec
字幕编解码器
等同: -coddec:s, -c:s
字幕编码器
如你要为输入指定解码器或者为编码器,则可以参考以下命令。
呼叫编码器与解码器:
ffmpeg -c:a dca -i input.dts -c:a libfdk_aac output.m4a
※通常可以省略解码器设定,FFmpeg 将会自动呼叫合适的解码器。
音讯编码器 (Audio Encoders)
以下编码器与选项只列出常用部分,详细说明请参考 官网说明文件。
※AAC-LC 品质
aac >= libfdk_aac > libfaac > libvo_aacenc
aac
AAC 音讯编码器。此为实验项目,必须使用 -strict experimental 解锁。
推荐改用 libfdk_aac。
常用选项:
-strict experimental
解锁实验项目所必须。
-qscale[:
串流说明符]
品质
-q[:
串流说明符]
品质
设定音讯品质 (Variable Bit Rate 模式)。实验项目,需要 -strict experimental
范围为 0.1–10。VBR 是实验性质的可能会产生比 CBR 更糟的结果。
-ab 位元率 (输出)
-b[:
串流说明符]
位元率
设定音讯位元率 (Available Bit Rate 模式)。
单位为 位元/秒 (bps, bits/sec)。
ac3, ac3_fixed
AC3 音讯编码器。
常用选项:
-ab
位元率
-b[:
串流说明符]
位元率
设定音讯位元率 (Available Bit Rate 模式)。
单位为 位元/秒 (bps, bits/sec)。
dca
DTS 音讯编码器。此为实验项目,必须使用 -strict experimental 解锁。
常用选项:
-strict experimental
解锁实验项目,必须。
-profile[:
串流说明符]
Profile
设定音讯 Profile。它接受下列值之一:
‘dts’
DTS
‘dts_es’
DTS-ES
‘dts_96_24’
DTS 96/24
‘dts_hd_hra’
DTS-HD High Resolution Audio
‘dts_hd_ma’
DTS-HD Master Audio
vorbis
Vorbis 音讯编码器。
常用选项:
-ab
位元率
-b[:
串流说明符]
位元率
设定音讯位元率 (Available Bit Rate 模式)。
单位为 位元/秒 (bps, bits/sec)。
alac
ALAC 无损音讯编码器。
常用选项:
-compression_level[:
串流说明符]
等级
设定算法复杂度。范围为 0–3。0 为最高速度编码,但档案较大,3 为最慢编码但档案最小。默认值为 3
flac
FLAC 无损音讯编码器。
常用选项:
-compression_level[:
串流说明符]
等级
设定算法复杂度。范围为 0–12。0 为最高速度编码,但档案较大,12 为最慢编码但档案最小。默认值为 5
libfdk_aac
AAC 音讯编码器 - FDK。此为 External Libraries,要使用此编码器请确认 configuration 之中必需含有 --enable-libfdk-aac,或是参考 -encoders 的输出讯息。
常用选项:
-ab
位元率
-b[:
串流说明符]
位元率
设定音讯位元率 (Available Bit Rate 模式)。
单位为 位元/秒 (bps, bits/sec)。
如果使用了 VBR 编码,此选项会被忽略。
-vbr[:
串流说明符]
品质
设定音讯品质 (Variable Bit Rate 模式)。
范围为 1–5,5 为最高品质。
目前,只有“aac_low”与“aac_he” Profile 支援 VBR 编码。
-profile[:
串流说明符]
Profile
设定音讯 Profile。它接受下列值之一:
‘aac_low’
MPEG-4 AAC LC (default)
‘aac_he’
MPEG-4 HE-AAC (SBR)
‘aac_he_v2’
MPEG-4 HE-AAC v2 (SBR+PS)
‘aac_ld’
MPEG-4 AAC LD
‘aac_eld’
MPEG-4 AAC ELD
libvo_aacenc
AAC 音讯编码器 - VisualOn。此为 External Libraries,要使用此编码器请确认 configuration 之中必需含有 --enable-libvo_aacenc,或是参考 -encoders 的输出讯息。
常用选项:
-ab
位元率
-b[:
串流说明符]
位元率
设定音讯位元率 (CBR 模式)。
libopus
Opus 音讯编码器。此为 External Libraries,要使用此编码器请确认 configuration 之中必需含有 --enable-libopus,或是参考 -encoders 的输出讯息。
常用选项:
-ab
位元率 (输出)
-b[:
串流说明符]
位元率
设定音讯位元率 (Available Bit Rate 模式)。
单位为 位元/秒 (bps, bits/sec)。
-vbr[:
串流说明符]
模式
设定 VBR 模式。它接受下列值之一:
‘off’
不使用 VBR 模式,即 CBR 模式。
‘on’
使用 VBR 模式。
‘constrained’
使用 CVBR 模式。
-compression_level[:
串流说明符]
等级
设定算法复杂度。范围为 0–10。0 为最高速度编码,但品质较低,10 为最慢编码但品质最高。默认值为 10
libvorbis
Vorbis 音讯编码器。此为 External Libraries,要使用此编码器请确认 configuration 之中必需含有 --enable-libvorbis,或是参考 -encoders 的输出讯息。
常用选项:
-qscale[:
串流说明符]
品质
-q[:
串流说明符]
品质
设定音讯品质 (Variable Bit Rate 模式)。
范围为 0–10,10 为最高品质。3–6 是好的尝试范围。默认值为 -q:a 3
-ab
位元率
-b[:
串流说明符]
位元率
设定音讯位元率 (Available Bit Rate 模式)。
单位为 位元/秒 (bps, bits/sec)。
libmp3lame
MP3 音讯编码器 - LAME。此为 External Libraries,要使用此编码器请确认 configuration 之中必需含有 --enable-libmp3lame,或是参考 -encoders 的输出讯息。
常用选项:
-ab
位元率
-b[:
串流说明符]
位元率
设定音讯位元率 (ABR 或 CBR 模式)。
如果使用了 VBR 编码,此选项会被忽略。
-abr[:
串流说明符] 1
使用 ABR 编码模式于。FFmpeg 依赖 -b:a 选项来设定位元率。
-qscale[:
串流说明符]
品质
-q[:
串流说明符]
品质
设定音讯品质 (Variable Bit Rate 模式)。
范围为 0–9,0 为最高品质。默认值为 -q:a 4
-compression_level[:
串流说明符]
等级
设定算法复杂度。范围为 0–9。但品质较低,0 为最慢编码但品质最高,9 为最高速度编码。
视讯编码器 (Video Encoders)
以下编码器与选项只列出常用部分,详细说明请参考 官网说明文件。
mpeg2video
MPEG-2 视讯编码器。
常用选项:
-b[:
串流说明符]
位元率
设定视讯位元率(1-Pass: ABR, 2-Pass: VBR)。
单位为 位元/秒 (bps, bits/sec)。
-qscale[:
串流说明符]
品质
-q[:
串流说明符]
品质
设定视讯品质 (Variable Bit Rate 模式)。
范围为 1–31,1 为最高品值。
-maxrate[:
串流说明符]
位元率
设定最大流量容许值 (每秒位元),bufsize 需要被设定。
-bufsize[:
串流说明符]
位元值
设定流量控制缓冲区大小 (位元)。
mpeg4
MPEG-4 part 2 视讯编码器。
常用选项:
-b[:
串流说明符]
位元率
设定视讯位元率(1-Pass: ABR, 2-Pass: VBR)。
单位为 位元/秒 (bps, bits/sec)。
-qscale[:
串流说明符]
品质
-q[:
串流说明符]
品质
设定视讯品质 (Variable Bit Rate 模式)。
范围为 1–31,1 为最高品值。
-maxrate[:
串流说明符]
位元率
设定最大流量容许值 (每秒位元),bufsize 需要被设定。
-bufsize[:
串流说明符]
位元值
设定流量控制缓冲区大小 (位元)。
libxvid
MPEG-4 part 2 视讯编码器。
此为 External Libraries,要使用此编码器请确认 configuration 之中必需含有 --enable-lixvid,或是参考 -encoders 的输出讯息。
常用选项:
-b[:
串流说明符]
位元率
设定视讯位元率(1-Pass: ABR, 2-Pass: VBR)。
单位为 位元/秒 (bps, bits/sec)。
-qscale[:
串流说明符]
品质
-q[:
串流说明符]
品质
设定视讯品质 (Variable Bit Rate 模式)。
范围为 1–31,1 为最高品值。
-maxrate[:
串流说明符]
位元率
设定最大流量容许值 (每秒位元),bufsize 需要被设定。
-bufsize[:
串流说明符]
位元值
设定流量控制缓冲区大小 (位元)。
libvpx, libvpx-vp9
VP8 / VP9 视讯编码器。
此为 External Libraries,要使用此编码器请确认 configuration 之中必需含有 --enable-libvpx,或是参考 -encoders 的输出讯息。
常用选项:
-b[:
串流说明符]
位元率
设定视讯位元率。
单位为 位元/秒 (bps, bits/sec)。
-crf
设定值
即 vpxenc 的 CQ 位元率控制模式。设定视讯品质 (Variable Bit Rate 模式)。
设定值范围: vp8: 4 - 63, vp9: -1 - 63。设定值越低则输出品质越高。
将位元率设为 0 (-b:v 0),将确保每个划格 (frames) 所分配到的位元数足以达到一个恒定 (感官) 品质等级。若位元率不为 0,将确保一个恒定(感官)品质,并保值输出位元率不超过设定位元率。
http://trac.ffmpeg.org/wiki/Encode/VP9#constantq
-speed[:
串流说明符]
设定值
设定 品质/速度比。比较高的值以品质为代价提升编码速度。
设定值范围: vp8: -16 - 16, vp9: -8 - 8
-lossless 1
启用无损编码模式。
libx264, libx264rgb
MPEG-4 AVC / H.264 视讯编码器。
此为 External Libraries,要使用此编码器请确认 configuration 之中必需含有 --enable-libx264,或是参考 -encoders 的输出讯息。
常用选项:
-b[:
串流说明符]
位元率
设定视讯位元率。
单位为 位元/秒 (bps, bits/sec)。
-crf[:
串流说明符]
值
设定恒定品质模式 (constant quality mode) 的品质。
范围为 0–51.0,0 为最高品质。建议使用 18 - 26。默认值为 23
-qp[:
串流说明符]
值
设定恒定量化率方法 (constant quantization rate control method) 参数。
范围为 0–69,0 为最高品质 (无损)。建议使用 21 - 28。默认值为 23
-profile[:
串流说明符]
Profile
选择视讯 Profile。它接受下列值之一:
以下为可用值:
‘baseline’
Baseline Profile (BP)
‘main’
Main Profile (MP)
‘high’
High Profile (HiP)
‘high10’
High 10 Profile (Hi10P)
‘high422’
High 4:2:2 Profile (Hi422P)
‘high444’
High 4:4:4 Predictive Profile (Hi444PP)
-preset[:
串流说明符]
Preset
平衡压缩效率和编码速度,速度越慢则效率 (画质-位元率比) 越高
以下为可用值:
字串: ‘ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo’
或数值: 0-9
-tune[:
串流说明符]
Tune
最佳化编码效果。
它接受下列值之一::
‘film’
电影 (胶片电影)。
‘animation’
动画。例如卡通/日本动画。
‘grain’
胶片颗粒。颗粒感很重的影片。
‘stillimage’
静止影像。例如幻灯片效果的影片。
‘psnr’
优化 PSNR 值。
‘ssim’
优化 SSIM 值。
‘fastdecode’
快速解码。用于低性能播放设备。
‘zerolatency’
零延迟。处里时间低延迟。主要用于直播等。
-refs[:
串流说明符]
数量
设定参考划格最大数量。
-bf[:
串流说明符]
数量
设定 B-Frame 最大连续数量。
-maxrate[:
串流说明符]
位元率
设定最大流量容许值 (每秒位元),bufsize 需要被设定。
-bufsize[:
串流说明符]
位元值
设定流量控制缓冲区大小 (位元)。
-fastfirstpass
参数
可用值:
0
不加速首次编码。
1
加速首次编码。
-x264opts[:
串流说明符]
config
-x264-params[:
串流说明符]
config
设定任何 x264 选项,见 x264 --fullhelp
config 语法:
[key[=value]][:key[=value]][:key[=value]]...
例如:
-x264-params level=30:bframes=0:weightp=0:cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:no-fast-pskip=1:subq=6:8x8dct=0:trellis=0
libx265
MPEG-H HEVC / H.265 视讯编码器。
此为 External Libraries,要使用此编码器请确认 configuration 之中必需含有 --enable-lix265,或是参考 -encoders 的输出讯息。
常用选项:
-b[:
串流说明符]
位元率
设定视讯位元率。
单位为 位元/秒 (bps, bits/sec)。
-crf[:
串流说明符]
值
设定恒定品质模式 (constant quality mode) 的品质。
范围为 0–51.0,0 为最高品质。建议使用 18 - 26。默认值为 23
-preset[:
串流说明符]
Preset
平衡压缩效率和编码速度,速度越慢则效率 (画质-位元率比) 越高
以下为可用值:
字串: ‘ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo’
或数值: 0-9
-tune[:
串流说明符]
Tune
最佳化编码效果。
-x265-params[:
串流说明符]
config
设定任何 x265 选项,见 x265 --help。规则同 x264opts。
筛选器 (Filters)
筛选器
-filter[:
串流说明符]
filtergraph
-vf
filtergraph
等同 -filter:v
filtergraph
-af
filtergraph
等同-filter:a
filtergraph
-filter_complex
filtergraph
用法参考以下连结:
http://www.5i01.cn/topicdetail.php?f=510&t=4200388
filtergraph 规则:
[筛选器[=筛选器设定]][,筛选器[=筛选器设定]][,筛选器[=筛选器设定]]...
筛选器设定 规则:
[参数[=值]][:参数[=值]]:参数[=值]]...
例如:
-vf crop=w=1920:h=800:x=0:y=140,scale=w=1280:h=528
如果筛选器设定含有特殊字符(例如 * 或 >),则必须使用 单引号('
字串') 或 双引号("
字串"):
-vf scale='w=1280:h=trunc((ow/dar)/8+0.5)*8',setsar='r=1/1'
-vf scale=w=1280:'h=trunc((ow/dar)/8+0.5)*8',setsar='r=1/1'
-vf scale=w=1280:h='trunc((ow/dar)/8+0.5)*8',setsar=r='1/1'
如果含有 filtergraph 空格,则只能使用 双引号:
-vf "scale = w = 1280 : h = trunc((ow / dar) / 8 + 0.5) * 8, setsar= r = 1 / 1"
※单引号最大范围只能包含筛选器设定,而无法包含整个 filtergraph。
音讯筛选器 (Audio Filters)
以下筛选器、选项、参数、常数只有列出常用部分,完整说明请见 官网说明文件。
volume
调整音量。默认值为 1.0
输出音量 = 音量 * 输入音量
----------------------------------------------------------------
范例:
‧音量减半
volume=0.5
或
volume=1/2
或
volume=-6.0206dB
lowpass
低通滤波器
参数:
frequency, f
Set frequency in Hz. Default is 500.
poles, p
Set number of poles. Default is 2.
width_type
Set method to specify band-width of filter.
h
Hz
q
Q-Factor
o
octave
s
slope
width, w
Specify the band-width of a filter in width_type units. Applies only to double-pole filter. The default is 0.707q and gives a Butterworth response.
aresample
重新取样输入的音讯。
‧重新取样为 44.1 KHz
aresample=44100
参数:
resampler
设定重新取样引擎. 默认值为 swr.
它接受下列值之一:
‘swr’
选择原生的 SW Resampler。
‘soxr’
选择SoX Resampler。
async
只能用于 SWR。简单的参数 1 使用拉伸、挤压、填充与修剪音讯串流去匹配时间戳记 (TimeStamp)。设定它为 1 将启用填充与修剪,较大的数值代表该数据可被拉伸或挤压的每一秒的取样最大数量。默认值是 0,因此不会做处里。
matrix_encoding
选择矩阵式立体声编码,必须搭配 -ac 选项。
它接受下列值之一:
‘none’
无
‘dolby’
Dolby
‘dplii’
Dolby Pro Logic II
----------------------------------------------------------------
范例:
‧重新取样为 44.1 KHz 以及音讯同步与矩阵编码
-ac 2 -af "aresample='44100:async=1:matrix_encoding=dplii'"
pan
混合声道与特定增益等级。
参数形式为 "
l:
outdef:
outdef:..."
新版参数形式为 "
l|
outdef|
outdef|..."
l
为输出声道布局或声道数。
outdef
为输出声道选择,形式为 "
out_name=[
gain*]
in_name[+[
gain*]
in_name...]"
out_name
输出声道定义。无论是 声道名称 (如: FL, FR, ...) 或是 声道编号 (如: c0, c1, ...)
gain
声道的系数。1 为音量不变。
in_name
输入声道使用。见 out_name;它不能够混用声道名称与编号。
假设将 ‘=’ 取代为 ‘<’,然后该规格的增益将被正规化使总和为 1,以避免噪声(Clipping Noise)。
----------------------------------------------------------------
范例:
‧调换左右声道
pan='2:FL=FR:FR=FL'
‧5.1 声道混合为 2.0 声道
pan=stereo: FL < FL + 0.5*FC + 0.6*BL + 0.6*SL : FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
完整命令
ffmpeg -i input.mkv -af "pan='stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR'" output.mkv
channelsplit
分割来自输入音讯串流的每个声道为独立的输出串流。
参数:
channel_layout
输入音讯串流的声道布局。默认值为 "stereo"。
----------------------------------------------------------------
范例:
分割来自输入音讯串流的立体声为2个独立的输出串流:
ffmpeg -i input.m2ts -filter_complex output.mka
※如果输入音讯声道数大于2,则只会分割左右声道。
分割来自输入音讯串流的5.1声道为6个独立的输出串流:
ffmpeg -i input.m2ts -filter_complex "channelsplit='channel_layout=5.1'" output.mka
分割来自输入音讯串流的5.1声道为6个独立的输出音讯档案:
ffmpeg -i input.wav -filter_complex "channelsplit='channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'" -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]' front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]' side_right.wav
amerge
合并两个或多个音讯串流为单独一个的多声道串流。
参数:
inputs
设定输入数量。默认值为 2。
假如输入的声道声道布局 (layout) 是不相交的,因此则相容,输出的声道布局被相应地设定且声道会被重新排序为所需。假如输入的声道声道布局 (layout) 不是不相交的,输出将含有第一个输入的全部声道以及第二个输入的全部声道,依此规律,且输出的声道布局默认值为输入声道的总数。
例如,假如第一个输入是 2.1 (FL+FR+LF) 且第二个输入是 FC+BL+BR,则输出为 5.1,声道为以下顺序: a1, a2, b1, a3, b2, b3 (a1 为第一个输入的第一个声道,b1 为第一个输入的第一个声道)。
另一方面,如果两个输入都是立体声 (FL+FR),输出声道将会被排序为默认的顺序: a1, a2, b1, b2,且输出声道布局将会擅自被设定为 4.0,也许是或也许不是期望值。
视讯筛选器 (Video Filters)
以下筛选器、选项、参数、常数只有列出常用部分,完整说明请见 官网说明文件。
crop
裁切输入视讯的宽高。
参数:
w, out_w
输出视讯的高度。默认值为 in_w。
h, out_h
输出视讯的宽度。默认值为 in_h。
x
左边裁切范围。默认值为 (in_w-out_w)/2
y
上边裁切范围。默认值为 (in_h-out_h)/2
keep_aspect
如果设定为1将使输出显示宽高比与输入相同,由改变 SAR (sample aspect ratio)。其默认值为0。
(登入后即可检视图片)
out_w, out_h, x, y 参数均包含以下常数:
‘in_w, iw’
‘in_h, ih’
输入宽度与高度。
‘out_w, ow’
‘out_h, oh’
输出(裁切之后)的宽度与高度。
‘a’
即 iw / ih
‘sar’
输入 sample aspect ratio
‘dar’
输入显示宽高比, 即 (iw / ih) * sar
----------------------------------------------------------------
范例:
‧左裁 8, 上裁 16, 右裁 32, 下裁 64。
crop='w=iw-8-32:h=ih-16-64:x=8,y=16'
‧1280x720, 左裁 8, 上裁 16, 右裁 32, 下裁 64。
crop='w=1240:h=640,x=8,y=16'
cropdetect
它不会做裁切,而是在扫描完毕后回报黑边范围、参考用裁切参数。可以 -ss 与 -t 设扫瞄范围,扫影片中段即可。
参数:
limit
Set higher black value threshold, which can be optionally specified from nothing (0) to everything (255). An intensity value greater to the set value is considered non-black. It defaults to 24.
round
The value which the width/height should be divisible by. It defaults to 16. The offset is automatically adjusted to center the video. Use 2 to get only even dimensions (needed for 4:2:2 video). 16 is best when encoding to most video codecs.
reset_count, reset
Set the counter that determines after how many frames cropdetect will reset the previously detected largest video area and start over to detect the current optimal crop area. Default value is 0.
This can be useful when channel logos distort the video area. 0 indicates ’never reset’, and returns the largest area encountered during playback.
----------------------------------------------------------------
范例:
1. 执行扫描
ffmpeg -i input.m2ts -vf cropdetect=40:2:0 -f null -
2. 假设最终结果为
[Parsed_cropdetect_0 @ 026b64c0] x1:0 x2:1279 y1:88 y2:632 w:1280 h:544 x:0 y:88 pts:113279 t:113.279000 crop=1280:544:0:88
3. 进行裁切
ffmpeg -i input.m2ts -vf crop=1280:544:0:88 output.mkv
scale
缩放输入视讯分辨率,使用 libswscale library。
scale 筛选器强制输出显示宽高比相同于输入显示比例, 通过改变像素宽高比来达成。
如果输入影像格式不同于下一个过滤器所需的格式, scale 将转换输入为所需的格式。
参数:
width, w
height, h
设定输出视讯宽高。默认值为与输入相同。
假如值为 0 则输出与输入相同。
If one of the values is -1, the scale filter will use a value that maintains the aspect ratio of the input image, calculated from the other specified dimension. If both of them are -1, the input size is used
If one of the values is -n with n > 1, the scale filter will also use a value that maintains the aspect ratio of the input image, calculated from the other specified dimension. After that it will, however, make sure that the calculated dimension is divisible by n and adjust the value if necessary.
w, h 参数所包含的常数:
‘in_w, iw’
‘in_h, ih’
输入宽度与高度。
‘out_w, ow’
‘out_h, oh’
输出(缩放之后)的宽度与高度。
‘a’
即 iw / ih
‘sar’
输入 sample aspect ratio
‘dar’
输入显示宽高比, 即 (iw / ih) * sar
----------------------------------------------------------------
范例:
‧缩放输入视讯至 1280x720。
scale=1280:720
或
scale='w=1280:h=720'
或
scale=1280x720
‧缩放输入视讯宽高至 1/2。
scale='w=iw/2:h=ih/2'
或
scale='w=iw/2:h=trunc((ow/dar)/2+0.5)*2'
或
scale='w=trunc((oh*dar)/2+0.5)*2:h=ih/2'
‧缩放输入视讯宽至 1280,自动 高 为 mod 16。
scale='w=1280:h=trunc((ow/dar)/16+0.5)*16'
trunc() 为取整数,小数舍去。
‧缩放输入视讯,宽小于或等于 720,高小或等于 480,像素宽高比为 40:33。
scale='w=min(720,trunc((480*33/40*dar)/2+0.5)*2):h=min(480,trunc((720*40/33/dar)/2+0.5)*2)'
pad
附加边框至输出影像。
参数:
width, w
height, h
输出视讯的宽度与高度。默认值为与输入相同。
设定值必须大于或等于输入。
x
y
左与上边框的范围。
color
填充区域的颜色。默认值为 "black"。
(登入后即可检视图片)
w, h 参数所包含的常数:
‘in_w, iw’
‘in_h, ih’
输入宽度与高度。
‘out_w, ow’
‘out_h, oh’
输出(缩放之后)的宽度与高度。
‘a’
即 iw / ih
‘sar’
输入 sample aspect ratio
‘dar’
输入显示宽高比, 即 (iw / ih) * sar
----------------------------------------------------------------
范例:
‧填充黑边使输出分辨率为 1920x1080,且上下边界相等、左右边界相等
pad='w=1920:h=1080:x=(ow-iw)/2:y=(oh-ih)/2'
‧上下填充黑边 (mod 16) 使输出显示比例为 16:9,且上下边界相等、左右边界相等
pad='w=iw:h=trunc((ow*sar*9/16)/16)*16:x=0:y=(oh-ih)/2'
‧自动填充黑边 (mod 16) 使输出显示比例为 16:9,且上下边界相等、左右边界相等
pad='w=max(iw,trunc((ih/sar*16/9)/2+0.5)*2):h=max(ih,trunc((iw*sar*9/16)/2+0.5)*2):x=(ow-iw)/2:y=(oh-ih)/2'
setdar, setsar
该 setsar 筛选器用于设定输出视讯的显示宽高比。
显示宽高比 = 水平分辨率 / 垂直分辨率 * 像素宽高比
注意,setdar 筛选器并不会改变视讯的分辨率,而是透过改变 像素宽高比 来改变 显示宽高比。
setsar 筛选器用于设定输出视讯的 取样 (又名"像素") 宽高比。
参数:
r, ratio, dar (setdar 专用), sar (setsar 专用)
设定比例。可以是浮点数或分数。
----------------------------------------------------------------
范例:
‧设定显示比例为 16:9
setdar='r=16/9'
或
setdar='dar=16/9'
‧设定像素比例为 40:33
setsar='r=40/33'
或
setsar='sar=40/33'
subtitles
用 libass 绘制使用的字幕到输出视讯上。
ffmpeg 的 configuration 之中必需含有 --enable-libass。
且 Windows 系统下需要 fonts-conf 才可以使 libass 正常工作,见详细说明。
详细说明:
http://www.5i01.cn/topicdetail.php?f=510&t=4462836
参数:
filename, f
设定字幕的档案名称来读取。这是必用参数。
original_size
Specify the size of the original video, the video for which the ASS file was composed. For the syntax of this option, check the "Video size" section in the ffmpeg-utils manual. Due to a misdesign in ASS aspect ratio arithmetic, this is necessary to correctly scale the fonts if the aspect ratio has been changed.
charenc
设定输入字幕的字符编码。 subtitles 过滤器专用。 只有非 UTF-8 有用。
stream_index, si
设定字幕串流索引。 subtitles 过滤器专用。
force_style
复盖字幕的默认样式(Style)或是脚本的讯息参数。它接受一个字串包含ASS风格(style)格式:
force_style='KEY=VALUE[,KEY=VALUE][,KEY=VALUE][,KEY=VALUE]......'
----------------------------------------------------------------
范例:
‧指定输入字幕档名。由于无法指定路径,所以字幕档必须位于工作目录。
subtitles=sub.srt
‧同上
subtitles='filename=sub.srt'
‧从影片档读取默认字幕串流。
subtitles=video.mkv
‧从影片档读取第二个字幕串流(第一个为#0,第二个为#1)。
subtitles='video.mkv:si=1'
‧强制复盖字幕风格为透明绿色微软正黑体
subtitles=sub.srt:force_style='FontName=Microsoft JhengHei,PrimaryColour=&HAA00FF00'
yadif
反交错 (Deinterlace) 输入视讯。
参数:
mode
交错模式采取。它接受下列值之一:
‘0, send_frame’
每一画格 (frame) 输出为一个划格 (frame)。
‘1, send_field’
每一场 (field) 输出为一个划格 (frame)。
‘2, send_frame_nospatial’
如 send_frame, 但跳过空间域 (spatial) 交错检查。
‘3, send_field_nospatial’
如 send_field, 但跳过空间域 (spatial) 交错检查。
该默认值为 send_frame.
parity
假设输入交错视讯的图像场奇偶 (field parity)。 它接受以下值之一:
‘0, tff’
顶场 (top field) 优先。
‘1, bff’
底场 (bottom field) 优先.
‘-1, auto’
启用场奇偶的自订检测。
该默认值是 auto。 如果该交错是未知或者编码器没有汇出此讯息则 tff 将被假定。
deint
指定那些划格来反交错。它接受下列值之一:
‘0, all’
反交错全部划格.。
‘1, interlaced’
只有交错划格。
该默认值为 all.
hqdn3d
This is a high precision/quality 3d denoise filter. It aims to reduce image noise, producing smooth images and making still images really still. It should enhance compressibility.
It accepts the following optional parameters:
luma_spatial
A non-negative floating point number which specifies spatial luma strength. It defaults to 4.0.
chroma_spatial
A non-negative floating point number which specifies spatial chroma strength. It defaults to 3.0*luma_spatial/4.0.
luma_tmp
A floating point number which specifies luma temporal strength. It defaults to 6.0*luma_spatial/4.0.
chroma_tmp
A floating point number which specifies chroma temporal strength. It defaults to luma_tmp*chroma_spatial/luma_spatial.
transpose
旋转输入视讯的画面。
参数:
dir
指定旋转方向:
‘0, 4, cclock_flip’
逆时针方向旋转 90 度 并垂直镜射
‘1, 5, clock’
顺时针方向旋转 90 度
‘2, 6, cclock’
逆时针方向旋转 90 度
‘3, 7, clock_flip’
顺时针方向旋转 90 度 并垂直镜射
For values between 4-7, the transposition is only done if the input video geometry is portrait and not landscape. These values are deprecated, the passthrough option should be used instead.
passthrough
Do not apply the transposition if the input geometry matches the one specified by the specified value. It accepts the following
‘none’
Always apply transposition.
‘portrait’
Preserve portrait geometry (when height >= width).
‘landscape’
Preserve landscape geometry (when width >= height).
Default value is none.
----------------------------------------------------------------
范例:
例 90度顺时针旋转,并保留纵向布局:
transpose=dir=1:passthrough=portrait
或
transpose=1:portrait
vflip
垂直镜射/上下翻转 (无参数)。
hflip
水平镜射/左右翻转 (无参数)。
多工解讯器 (Demuxer)
预留,编辑中......
http://www.ffmpeg.org/ffmpeg-all.html#Demuxers
多工器 (Muxers)
预留,编辑中......
http://www.ffmpeg.org/ffmpeg-all.html#Muxers