ffmpeg命令行codec选项
libavcodec提供一些通用的全局选项,可以作用于所有的编码器和解码器。
除此之外,每个编解码器还可能支持私有选项。
有时,全局选项可能只影响特定类型的编解码器,并且可能是无意义的或被另一种编解码器忽略,因此需要了解指定选项的含义。还有一些选项仅用于解码或编码。
支持的选项如下:b整数(编码,音频,视频)
设置码率,单位是bitss,默认是200K。ab整数(编码,音频)
设置音频码率,单位是bitss,默认是128K。bt整数(编码,视频)
设置视频码率容许偏差,单位是bitss。在1pass模式下,码率容许偏差指定了码率控制愿意偏离目标平均码率值的程度。这与最小最大码率无关。降低容许偏差太多会对质量产生不利影响。flags标记(解码编码,音频,视频,字幕)
设置通用标记。
可能的值:
mv4
每个宏块允许4个运动矢量
qpel
使用14像素运动补偿
loop
使用环路滤波
qscale
使用固定的qscale值
pass1
使用内部2pass码控的1pass模式
pass2
使用内部2pass码控的2pass模式
gray
只解码编码灰度tux
psnr
Seterror〔?〕variablesduringencoding
truncated
输入码流可能会随机截断
dropchanged不要输出参数与流中第一个解码帧不同的帧。
当帧被丢弃时返回AVERRORINPUTCHANGED错误。
ildct
使用交错的DCT
lowdelay
强制低延迟
globalheader
将全局头信息放置在额外数据中,而不是每个关键帧中
bitexact只写入与平台、编译、时间无关的数据。
这确保了文件和数据校验和在平台之间是可重复的和匹配的。
它的主要用途是回归测试
aic
采用H263高级帧内编码mpeg4ac预测
ilme
采用交错的运动估计
cgop
使用closedgop
outputcorrupt
可能输出损坏的帧timebase有理数
设置codec时基
它是表示帧时间戳的基本时间单位(以秒为单位)。对于固定fps的内容,
时间基准应该是1framerate。g整数(编码,视频)
设置GOP大小。默认是12。ar整数(解码编码,音频)
设置音频采样率,单位是Hz。ac整数(解码编码,音频)
设置音频声道数目。cutoff整数(编码,音频)
设置截止带宽。(部分编码器支持)framesize整数(编码,音频)
设置音频帧大小。
除了最后一个帧外,每个提交的帧每个通道都必须包含精确的framesize个samples。当编解码器设置了CODECCAPVARIABLEFRAMESIZE时,可能为0,在这种情况下,帧大小不受限制。framesize由一些解码器设置,以指示固定的帧大小。framenumber整数
设置帧数。delay整数qcomp浮点数(编码,视频)
设置视频量化器compression值(VBR)。它在码率控制方程中用作常数。
Recommendedrangefordefaultrceq:0。01。0。qblurfloat(encoding,video)
设置视频量化器blur值(VBR)。qmin整数(编码,视频)
设置最小qp值(VBR),范围1到69,默认值2。qmax整数(编码,视频)
设置最大qp值(VBR),范围1到1024,默认值31。qdiff整数(编码,视频)
设置量化值的最大差值(VBR)。bf整数(编码,视频)
设置B帧个数。范围是1到16。1表示根据编码器自动选择B帧个数;0表示禁用B帧。bqfactor浮点数(编码,视频)
在P帧和B帧之间设置qp因子。codectag整数bug标记(解码,视频)
解决编码器中有时无法自动检测到的错误。
值包括:
autodetect
xvidilace
Xvidinterlacingbug(如果fourccXVIX则自动检查)
ump4
如果fourccUMP4则自动检查
nopadding
paddingbug(自动检查)
amv
qpelchroma
stdqpel
过时的标准qpel
qpelchroma2
directblocksize
directqpelblocksizebug
edge
边缘填充bug
hpelchroma
dcclip
ms
微软解码器中各种bug的变通方法
trunc
trancatedframesstrict整数(解码编码,音频,视频)
指定严格遵守标准的程度。
值:
very
严格遵守规范或参考软件的更严格的旧版本。
strict
严格遵守规范中的所有规定,无论后果如何。
normal
unofficial
允许非官方的扩展。
experimental
允许使用非标准化的实验性东西,实验性(未完成正在进行的工作未经过良好测试)解码器和编码器。注意:实验性解码器可能会带来安全风险,不要使用它来解码不可信的输入。bqoffset浮点数(编码,视频)
设置P帧和B帧之间的QP偏移量。errdetect标记(解码,音频,视频)
设置错误检测标记。
crccheck
验证嵌入的crc
bitstream
检测比特流规格偏差
buffer
检测不正确的比特流长度
explode
检测到小错误时中止解码
ignoreerr忽略解码错误,继续解码。
如果您想分析视频的内容,
因此希望解码任何内容,这是非常有用的。
如果出现错误,此选项将无法生成令人愉快的视频
careful
考虑那些违反规范并且还未被视为错误的
compliant
将所有不符合规范的情况视为错误
aggressive
将正常编码器不应该做的事情视为错误hasbframes整数blockalign整数rcoverridecount整数maxrate整数(编码,音频,视频)
设置最大码率容许偏差,单位是bitss。需要bufsize也设置。minrate整数(编码,音频,视频)
设置最小码率容许偏差,单位是bitss。在设置CBR编码时最有用。除此之外,它没什么用处。bufsize整数(编码,音频,视频)
设置码率控制缓存大小,单位是bits。iqfactor浮点数(编码,视频)
在P帧和I帧之间设置QP因子。iqoffset浮点数(编码,视频)
设置P帧和I帧之间的QP偏移量。dct整数(编码,视频)
设置DCT算法
auto
自动选择
fastint
快速整形
int
精确整形
mmx
altivec
faan
浮点AANDCTlumimask浮点数(编码,视频)
对明亮区域的压缩力度大于中等区域。tcplxmask浮点数(编码,视频)
设置时域复杂度mask。scplxmask浮点数(编码,视频)
设置空域复杂度mask。pmask浮点数(编码,视频)
设置内部mask。darkmask浮点数(编码,视频)
对深色区域的压缩力度大于中等区域。idct整数(解码编码,视频)
选择IDCT算法
auto
int
simple
simplemmx
simpleauto
在simple和simplemmx中自动选择
arm
altivec
sh4
simplearm
simplearmv5te
simplearmv6
simpleneon
xvid
faani
浮点AANIDCTslicecount整数ec标记(解码,视频)
设置错误隐藏策略。
guessmvs
迭代运动向量(MV)搜索(慢)
deblock
对损坏的宏块使用更强的deblock滤波器
favorinter
更倾向于从上一帧而不是当前帧进行预测bitspercodedsample整数aspect有理数(编码,视频)
设置sample宽高比sar有理数(编码,视频)
设置sample宽高比,aspect的别名。debug标记(解码编码,音频,视频,字幕)
打印特定的调试信息。
pict
picture信息
rc
码率控制信息
bitstream
mbtype
宏块类型
qp
每个块的qp值
dctcoeff
greenmetadata
显示即将到来的帧、GOP或给定一段时间的复杂性元数据
skip
startcode
er
错误识别
mmco
bugs
buffers
图像缓存分配
threadops
线程操作
nomc
跳过运行补偿cmp整数(编码,视频)
设置整像素运行估计比较函数
sad
差值绝对值的和,默认值,计算速度最快。
sse
误差平方和
satd
Hadamard变换差值绝对值的和
dct
DCT变换差值绝对值的和
psnr
量化误差平方和(避免使用,质量低)
bit
编码块需要的bit数
rd
最优率失真,速度慢
zero
0hrvsad
垂直差值绝对值的和
vsse
垂直误差平方和
nsse
噪声保持差的平方和
w53
53小波,仅用于雪地
w97
97小波,仅用于雪地
dctmax
chroma
subcmp整数(编码,视频)
设置子像素运行估计比较函数
同cmp的值。mbcmp整数(编码,视频)
设置宏块比较函数。
同cmp的值。ildctcmp整数(编码,视频)
设置场dct比较函数。
同cmp的值。diasize整数(编码,视频)
为运动估计设置菱形类型和大小
(1024,INTMAX)
全运动估计,最慢
(768,1024〕
umh运行估计
(512,768〕
hex运行估计
(256,512〕
l2s菱形运行估计
〔2,256〕
var菱形运行估计
(1,2)
small菱形运行估计
1
funny菱形运行估计
(INTMIN,1)
sab菱形运行估计lastpred整数(编码,视频)
设置从前一帧来得运行矢量的数量。precmp整数(编码,视频)
设置预运动估计比较函数
同cmp的值。prediasize整数(编码,视频)
设置运动估计预通过的菱形类型和大小。subq整数(编码,视频)
设置子像素运动估计质量。merange整数(编码,视频)
设置运动向量范围。globalquality整数(编码,音频,视频)sliceflags整数mbd整数(编码,视频)
设置宏块决策算法(高质量模式)。
simple
使用mbcmp,默认值
bits
使用最少的bits
rd
使用最佳率失真rcinitoccupancy整数(编码,视频)
设置解码开始前加载到rc缓冲区的比特数。flags2标记(解码编码,音频,视频,字幕)
值:
fast
允许非规范兼容的加速技巧
noout
跳过比特流编码
ignorecrop
忽略来自sps的裁剪信息
localheader
在每个关键帧放置全局头信息,而不是在extradata中
chunks
帧数据可能被分割成多个chunks
showall
显示第一个关键帧之前的所有帧
exportmvs将运动向量导出到支持它的编解码器帧的sidedata
(参见AVFRAMEDATAMOTIONVECTORS)
skipmanual
不要跳过samples,导出跳过信息作为帧的sidedata
assroflushnoop
刷新时不要重置ASSReadOrder字段
iccprofiles
GenerateparseembeddedICCprofilesfromtocolorimetrytags。exportsidedata标记(解码编码,音频,视频,字幕)
mvs将运动向量导出到支持它的编解码器帧的sidedata
(参见AVFRAMEDATAMOTIONVECTORS)
prft将编码器ProducerReferenceTime导出到
支持它的编解码器包的sidedata
(参见AVPKTDATAPRFT)
vencparams将视频编码参数导出到支持它的编解码器帧的sidedata
(参见AVFRAMEDATAVIDEOENCPARAMS)
目前,支持H。264andVP9
filmgrain将电影grain导出到帧的sidedata
(参见AVFRAMEDATAFILMGRAINPARAMS)
目前,支持AV1解码器threads整数(解码编码,视频)
设置要使用的线程数
值0表示自动选择线程数,默认是自动选择。dc整数(编码,视频)
设置intradcprecisionnssew整数(编码,视频)
设置nsse权重skiptop整数(解码,视频)
设置顶部被跳过的宏块行数skipbottom整数(解码,视频)
设置底部被跳过的宏块行数profile整数(编码,音频,视频)
设置编码器profile。默认值为unknown。编码器特定的profile记录在相关的编码器文档中。level整数(编码,音频,视频)
可能的值:‘unknown’lowres整数(解码,音频,视频)
解码图像的一部分
1hr12
2hr14
3hr18mblmin整数(编码,视频)
设置最小宏块拉格朗日因子(VBR)mblmax整数(编码,视频)
设置最大宏块拉格朗日因子(VBR)skiploopfilter整数(解码,视频)
跳过环路滤波skipidct整数(解码,视频)
跳过IDCTskipframe整数(解码,视频)
根据选项值所选择的帧类型进行解码器丢弃处理
none
不丢弃帧
default
丢弃无用的帧,比如0大小的帧
noref
丢弃所有非参考帧
bidir
丢弃所有B帧
nokey
丢弃除关键帧外的所有帧
nointra
丢弃除I帧外的所有帧
all
丢弃所有帧
默认值是defaultbidirrefine整数(编码,视频)
细化双向宏块中使用的两个运动向量keyintmin整数(编码,视频)
设置关键帧之间的最小间隔refs整数(编码,视频)
设置运动补偿的参考值数目trellis整数(编码,音频,视频)
设置率失真优化量化mv0threshold整数(编码,视频)compressionlevel整数(编码,音频,视频)bitsperrawsample整数channellayout整数(解码编码,音频)requestchannellayout整数(解码,音频)rcmaxvbvuse浮点数(编码,视频)rcminvbvuse浮点数(编码,视频)ticksperframe整数(解码编码,音频,视频)colorprimaries整数(解码编码,视频)
bt709
BT。709
bt470m
BT。470M
bt470bg
BT。470BG
smpte170m
SMPTE170M
smpte240m
SMPTE240M
film
Film
bt2020
BT。2020
smpte428
SMPTEST4281
smpte4281
SMPTEST4281
smpte431
SMPTE4312
smpte432
SMPTE4321
jedecp22
JEDECP22colortrc整数(解码编码,视频)
bt709
BT。709
gamma22
BT。470M
gamma28
BT。470BG
smpte170m
SMPTE170M
smpte240m
SMPTE240M
linear
Linear
log100
Log
log316
Logsquareroot
iec6196624
IEC6196624
bt1361e
BT。1361
iec6196621
IEC6196621
bt202010
BT。202010bit
bt202012
BT。202012bit
smpte2084
SMPTE2084
smpte428
SMPTE4281
aribstdb67
ARIBSTDB67
log
Log
logsqrt
Logsquareroot
iec6196624
IEC6196624
bt1361
BT。1361
iec6196621
IEC6196621
bt202010bit
BT。202010bit
bt202012bit
BT。202012bit
smpte4281
SMPTE4281colorspace整数(解码编码,视频)
rgb
RGB
bt709
BT。709
fcc
FCC
bt470bg
BT。470BG
smpte170m
SMPTE170M
smpte240m
SMPTE240M
ycocg
YCOCG
bt2020nc
BT。2020NCL
bt2020ncl
BT。2020NCL
bt2020c
BT。2020CL
bt2020cl
BT。2020CL
smpte2085
SMPTE2085
chromaderivednc
ChromaderivedNCL
chromaderivedc
ChromaderivedCL
ictcp
ICtCpcolorrange整数(解码编码,视频)
如果用作输入参数,它会提示解码器输入的colorrange
tv
mpeg
MPEG(2192(n8))
pc
jpeg
JPEG(2n1)chromasamplelocation整数(解码编码,视频)
left
center
topleft
top
bottomleft
bottomlogleveloffset整数
设置日志级别偏移量slices整数(编码,视频)
片数,用于并行编码。threadtype标记(解码编码,视频)
选择要使用的多线程方法
使用frame会增加解码延迟,每个线程增加一帧,所以不能提供未来帧的客户端不应该使用它
值:
slice一次解码一个帧的多个部分。
使用切片的多线程只有在视频用切片编码时才有效
frame
一次解码多个帧
默认值是sliceframeaudioservicetype整数(编码,音频)
设置音频服务类型
ma
MainAudioService
ef
Effects
vi
VisuallyImpaired
hi
HearingImpaired
di
Dialogue
co
Commentary
em
Emergency
vo
VoiceOver
ka
Karaokerequestsamplefmtsamplefmt(解码,音频)
设置音频解码器优先使用的sample格式,默认是nonepkttimebase有理数subcharenc编码(解码,字幕)
设置输入字幕字符编码fieldorderfieldorder(视频)
设置覆盖视频的帧场顺序
progressive
Progressivevideo
tt
Interlacedvideo,topfieldcodedanddisplayedfirst
bb
Interlacedvideo,bottomfieldcodedanddisplayedfirst
tb
Interlacedvideo,topcodedfirst,bottomdisplayedfirst
bt
Interlacedvideo,bottomcodedfirst,topdisplayedfirstskipalphabool(解码,视频)
设置为1以禁用alpha处理(透明度),默认值为0。codecwhitelistlist(input)
用逗号分割的解码器列表白名单。默认都允许。dumpseparatorstring(input)
分隔符用于分隔打印在命令行上关于Stream参数的字段。例如,用换行和缩进分隔字段ffprobedumpseparatorivideosmatrixbenchmpeg2。mpgmaxpixels整数(解码编码,视频)
每个图像的最大像素数。此值可用于避免由于图像过大而导致的内存溢出故障applycroppingbool(解码,视频)
如果裁剪参数是左侧和顶部参数所需对齐方式的倍数,则启用裁剪。如果对齐不符合,裁剪将部分应用以保持对齐。默认值是1(已启用)。
注意:所需的对齐取决于是否设置了AVCODECFLAGUNALIGNED和CPU。
AVCODECFLAGUNALIGNED不能从命令行更改。硬件解码器也不会应用左上裁剪。举例:
1、输入mp4文件,输出ts文件,视频编码器采用mpeg2video,关键帧间隔12帧,B帧个数为0,以场格式编码,视频码率12Mbps;音频编码器采用mp2,音频码率128kbps。。ffmpegiin。mp4c:vmpeg2videog12bf0flagsildctilmetop1b:v12000kc:amp2b:a128kfmpegtsout。ts
其中g、bf、flags三个参数属于codec通用选项。
2、输入mp4文件,输出flv文件,视频编码器采用libx264,视频码率1Mbps;音频编码器采用mp3,输出立体声,采样率44100Hz,采样格式为有符号16位,音频码率32kbps。。ffmpegiin。mp4c:vlibx264b:v1000kpixfmtyuv420pc:alibmp3lameac2ab32kar44100samplefmts16pfflvout。flv
其中ac、ab、ar三个参数属于codec通用选项。