10 编码选项

libavcodec提供一些通用的全局选项设置,可在所有的编码器和解码器起效。另外每个编解码器可以支持所谓的私有化设置,以满足特定的编解码要求。

有时,一个全局选项会影响到特定的编解码器,而对其它编解码产生不良影响或者会不被识别,所以你需要了解这些影响编解码选项的具体意义,了解那些只对特定编码或者解码有效的选项。

这些选项大多可以-option value的格式在ffmpeg工具中指定,其中-option是选项名,value是要设置的选项参数值,个别是利用AVCodecContext选项进行额外配置,还有极个别的使用定义在libavutil/opt.h中的API在程序过程中配置使用。

下面是这些选项的列表(括号中表示选项有效的状态,可能是decoding-解码时,encoding—编码时,audio-音频,video-视频,subtitles-字幕 以及特定的编码名称,如果mpeg4):

b integer (encoding,audio,video)

设置码率,单位为bits/s。默认200K。
ab integer (encoding,audio)

设置音频码率,单位bits/s。默认128K。
bt integer (encoding,video)

设置视频码率偏离公差(video bitrate tolerance),单位bits/s。对于1次编码模式中码率控制公差指愿意偏离目标(码率)的平均码率值,故不能由此确定最小/最大码率,即不能假定最小/最大码率是目标码率+-码率偏离公差。太低的偏离公差影响编码后的质量。
flags flags (decoding/encoding,audio,video,subtitles)

设置常见的标志

可能值有:

‘mv4’

使用4路监控宏块运动矢量 (mpeg4). 

‘qpel’

使用1/4像素补偿 

‘loop’

使用循环过滤 

‘qscale’

使用固定放缩qscale 

‘gmc’

使用gmc. 

‘mv0’

一直假定mb中mv=<0,0>。

‘input_preserved’
‘pass1’

在第1次编码中使用内部控制段模式。 

‘pass2’

在第2次编码中使用内部控制段

‘gray’

只有decode/encode灰度 

‘emu_edge’

不描绘边缘 

‘psnr’

在设置了错误变量时仍然继续编码

‘truncated’
‘naq’

规范的自适应量化 

‘ildct’

使用交错DCT. 

‘low_delay’

强制减少延迟

‘global_header’

在每个关键帧的扩展数据中添加全局头 

‘bitexact’

只写的关于平台、编译创建以及时间无关(platform-, build- 和time-independent) 的数据 (除了(I)DCT)。这确保了文件和数据校验和平台之间的可重复性和匹配,它主要用于回归测试。 

‘aic’

H263高级帧内编码/mpeg4打开ac预测 

‘cbp’

已失效/过期,使用mpegvideo提供的私有选项 

‘qprd’

已失效/过期,使用mpegvideo提供的私有选项  

‘ilme’

交错运动估计。

‘cgop’

关闭gop 

me_method integer (encoding,video)

设置运动估计方法

可能值有:

‘zero’

0运动估计,即不进行估计 (最快) 

‘full’

full运动估计 (最慢) 

‘epzs’

EPZS运动估计 (默认) 

‘esa’

esa运动估计 (full的别名) 

‘tesa’

tesa运动估计 

‘dia’

dia运动估计(epzs的别名) 

‘log’

log运动估计 

‘phods’

phods运动估计

‘x1’

X1运动估计 

‘hex’

hex运动估计 

‘umh’

umh运动估计

‘iter’

iter运动估计 

extradata_size integer

设置扩展数据尺寸
time_base rational number

设置编码的时间基础计量

它是时间的基本单位(秒)的帧时间戳表示。对于固定FPS内容,这个值应该是1/frame_rate,每次时间戳都增加1个单位的时间量。
g integer (encoding,video)

设置一组图片的数量,默认是12
ar integer (decoding/encoding,audio)

设置音频采样率(单位Hz)
ac integer (decoding/encoding,audio)

设置音频通道数
cutoff integer (encoding,audio)

设置截止带宽
frame_size integer (encoding,audio)

设置音频帧尺寸

除了最后一帧音频数据,否则每个音频数据帧都包含frame_size设定大小的数据。当编码中CODEC_CAP_VARIABLE_FRAME_SIZE设置了,则这个值可能是0,在这种情况下帧的大小是没有限制的。它在一些解码器中显示固定帧大小。
frame_number integer

设置帧数量
delay integer
qcomp float (encoding,video)

设置视频量化压缩规模(VBR)。这里用在控制方程的常数。默认rc_eq推荐范围是: 0.0-1.0.
qblur float (encoding,video)

设置视频量化尺度模糊(VBR).
qmin integer (encoding,video)

设置最小视频量化尺度(VBR)。 取值范围是-1-69,默认为2
qmax integer (encoding,video)

设置最大视频量化尺度(VBR)。 取值范围是-1-1024,默认为31
qdiff integer (encoding,video)

设置量化级之间最大的差异(VBR).
bf integer (encoding,video)

设置最大B帧间隔

必须是-1 -16间的数。0表示禁止B帧,如果为-1表示依据编码器进行指定,默认值是0
b_qfactor float (encoding,video)

设置P帧和B帧之间的qp因子
rc_strategy integer (encoding,video)

设置码率控制方法
b_strategy integer (encoding,video)

设置I/P/B帧选择策略.
ps integer (encoding,video)

设置RTP播放加载数据量(缓冲),单位是字节(bytes)
mv_bits integer
header_bits integer
i_tex_bits integer
p_tex_bits integer
i_count integer
p_count integer
skip_count integer
misc_bits integer
frame_bits integer
codec_tag integer
bug flags (decoding,video)

解决不能自动检测/识别编码的错误(bug)

可能值:

‘autodetect’
‘old_msmpeg4’

一些旧lavc处理的msmpeg4v3文件(不能自动检测) 

‘xvid_ilace’

Xvid交错错误 (如果强制为fourcc==XVIX则可自动检测) 

‘ump4’

(fourcc==UMP4可自动检测) 

‘no_padding’

填充错误(自动检测) 

‘amv’
‘ac_vlc’

非法vlc错误 (对每个fourcc自动检测) 

‘qpel_chroma’
‘std_qpel’

老标准的qpel (对每个fourcc/version自动检测) 

‘qpel_chroma2’
‘direct_blocksize’

direct-qpel-blocksize错误 (对每个fourcc/version自动检测) 

‘edge’

edge填充bug (对每个fourcc/version自动检测) 

‘hpel_chroma’
‘dc_clip’
‘ms’

微软破解解码器上的各种缺陷 

‘trunc’

截断帧

lelim integer (encoding,video)

设置亮度单系数消除阈值(负值也考虑直流系数)。
celim integer (encoding,video)

设置消除色度单系数阈值(负值也考虑直流系数)
strict integer (decoding/encoding,audio,video)

指定如何遵守标准(严格程度)

可能的值:

‘very’

严格模式,遵守过时的版本规格或者依软件需求的版本规格进行处理

‘strict’

严格模式,无论如何都严格按照规格处理 

‘normal’
‘unofficial’

允许非官方扩展

‘experimental’

允许非标准的实验性质解码/编码器(未完成/未测试/不工作)**注意**实验性质的解码工具可能带来安全风险,不要用这类解码器解码不可信输入 

b_qoffset float (encoding,video)

在P帧和B帧间设置QP(帧间偏移)
err_detect flags (decoding,audio,video)

设置错误检测标志

可能值:

‘crccheck’

嵌入CRC验证 

‘bitstream’

比特流规范偏差检测 

‘buffer’

不当码流长度检测 

‘explode’

在出现错误时中止解码 

‘ignore_err’

忽略解码错误继续解码。则对于分析视频内容是十分有用的,这时希望无论如何解码都继续工作。

‘careful’


考虑环境支持,一个正确的编码器不能被错误停止

has_b_frames integer
block_align integer
mpeg_quant integer (encoding,video)

使用MPEG量化代替H.263。
qsquish float (encoding,video)

保持Qmin和Qmax之间量化器。(0 = clip, 1 = use 还可以利用函数进行微调)。
rc_qmod_amp float (encoding,video)

设置实验/量化
rc_qmod_freq integer (encoding,video)

设置实验/量化调制
rc_override_count integer
rc_eq string (encoding,video)

速率控制方程组。除了内部标准定义外,可以有以下选择:bits2qp(bits), qp2bits(qp)。还可以利用下面介绍的常数: iTex、pTex、tex ,mv fCode iCount mcVar var isl isB avgQP qComp avgIITex avgPITx avgPPTex avgBPText。
maxrate integer (encoding,audio,video)

设置最大比特率容差(单位 比特/秒)。要求的缓冲大小被设置。
minrate integer (encoding,audio,video)

设置最小比特率容差(单位 比特/秒)。通常用于CBR编码,否则无意义
bufsize integer (encoding,audio,video)

设置控制缓冲区大小(单位bits)
rc_buf_aggressivity float (encoding,video)

目前无效
i_qfactor float (encoding,video)

设置P帧和I帧间的QP因子
i_qoffset float (encoding,video)

设置P帧和I帧间的QP偏移
rc_init_cplx float (encoding,video)

设置1次编码的初始复杂性
dct integer (encoding,video)

设置DCT(数字转换)算法

可能值:

‘auto’

自动选择一个优化质量算法(默认值) 

‘fastint’

偏重速度 

‘int’

精准整数 

‘mmx’
‘altivec’
‘faan’

浮点AAN DCT 

lumi_mask float (encoding,video)

压缩高亮
tcplx_mask float (encoding,video)

设置临时/时间复杂遮蔽/蒙版
scplx_mask float (encoding,video)

设置空间复杂遮蔽/蒙版
p_mask float (encoding,video)

设置组间遮蔽
dark_mask float (encoding,video)

压缩暗区
idct integer (decoding/encoding,video)

选择实施的IDCT

可能值:

‘auto’
‘int’
‘simple’
‘simplemmx’
‘simpleauto’

自动应用一个兼容的IDCT

‘arm’
‘altivec’
‘sh4’
‘simplearm’
‘simplearmv5te’
‘simplearmv6’
‘simpleneon’
‘simplealpha’
‘ipp’
‘xvidmmx’
‘faani’

浮点AAN IDCT 

slice_count integer
ec flags (decoding,video)

设置错误隐藏策略

可能值:

‘guess_mvs’

运动矢量迭代 (MV)搜索(慢/slow) 

‘deblock’

对损坏的MBs使用强壮的去块滤波

‘favor_inter’

有利用从前帧预测而不是当前帧预测 

bits_per_coded_sample integer
pred integer (encoding,video)

设置预测方法

可能值:

‘left’
‘plane’
‘median’
aspect rational number (encoding,video)

设置样本纵横比
debug flags (decoding/encoding,audio,video,subtitles)

输出特定调试信息.

可能值:

‘pict’

图片相关信息 

‘rc’

码率控制 

‘bitstream’
‘mb_type’

宏块 (MB)类型 

‘qp’

每个块的量化参数(QP) 

‘mv’

运动矢量 

‘dct_coeff’
‘skip’
‘startcode’
‘pts’
‘er’

错误识别 

‘mmco’

内存管理控制操作(H.264) 

‘bugs’
‘vis_qp’

量化参数可视化 (QP),即低的QP显示为绿色 

‘vis_mb_type’

块类型可视化 

‘buffers’

图像缓冲区分配 

‘thread_ops’

线程操作 

‘nomc’

跳跃运动补偿 

vismv integer (decoding,video)

运动矢量可视化 (MVs).

这个选项是过时的,参考codecview滤镜.

可能值:

‘pf’

p帧前测MVs 

‘bf’

B帧前测MVs 

‘bb’

B帧后测MVs 

cmp integer (encoding,video)

设置完整图元me压缩功能

可能值:

‘sad’

绝对差异总和, 最快(默认) 

‘sse’

误差平方和 

‘satd’

绝对Hadamard转换差异总和

‘dct’

绝对DCT转换差异总和 

‘psnr’

量化误差平方和 (avoid, 低品质) 

‘bit’

对特定块需要的比特数 

‘rd’

动态失真优化, 最慢

‘zero’

0 

‘vsad’

绝对垂直差异总和 

‘vsse’

垂直差异平方和 

‘nsse’

噪声保护的差的平方和

‘w53’

5/3 小波(变换), 只用于下雪场景 

‘w97’

9/7 小波(变换), 只用于下雪场景 

‘dctmax’
‘chroma’
subcmp integer (encoding,video)

设置局部图元me压缩功能

可能值:

‘sad’

绝对差异总和, 最快(默认) 

‘sse’

误差平方和 

‘satd’

绝对Hadamard转换差异总和

‘dct’

绝对DCT转换差异总和 

‘psnr’

量化误差平方和 (avoid, 低品质) 

‘bit’

对特定块需要的比特数 

‘rd’

动态失真优化, 最慢

‘zero’

0 

‘vsad’

绝对垂直差异总和 

‘vsse’

垂直差异平方和 

‘nsse’

噪声保护的差的平方和

‘w53’

5/3 小波(变换), 只用于下雪场景 

‘w97’

9/7 小波(变换), 只用于下雪场景 

‘dctmax’
‘chroma’
mbcmp integer (encoding,video)

设置宏块压缩功能

可能值:

‘sad’

绝对差异总和, 最快(默认) 

‘sse’

误差平方和 

‘satd’

绝对Hadamard转换差异总和

‘dct’

绝对DCT转换差异总和 

‘psnr’

量化误差平方和 (avoid, 低品质) 

‘bit’

对特定块需要的比特数 

‘rd’

动态失真优化, 最慢

‘zero’

0 

‘vsad’

绝对垂直差异总和 

‘vsse’

垂直差异平方和 

‘nsse’

噪声保护的差的平方和

‘w53’

5/3 小波(变换), 只用于下雪场景 

‘w97’

9/7 小波(变换), 只用于下雪场景 

‘dctmax’
‘chroma’
ildctcmp integer (encoding,video)

设置隔行dct压缩功能

可能值:

‘sad’

绝对差异总和, 最快(默认) 

‘sse’

误差平方和 

‘satd’

绝对Hadamard转换差异总和

‘dct’

绝对DCT转换差异总和 

‘psnr’

量化误差平方和 (avoid, 低品质) 

‘bit’

对特定块需要的比特数 

‘rd’

动态失真优化, 最慢

‘zero’

0 

‘vsad’

绝对垂直差异总和 

‘vsse’

垂直差异平方和 

‘nsse’

噪声保护的差的平方和

‘w53’

5/3 小波(变换), 只用于下雪场景 

‘w97’

9/7 小波(变换), 只用于下雪场景 

‘dctmax’
‘chroma’
dia_size integer (encoding,video)

设置运动估计区域类型和尺寸
last_pred integer (encoding,video)

设置从前帧预测运动量
preme integer (encoding,video)

设置预运动估计
precmp integer (encoding,video)

设置预运动估计压缩功能

可能值:

‘sad’

绝对差异总和, 最快(默认) 

‘sse’

误差平方和 

‘satd’

绝对Hadamard转换差异总和

‘dct’

绝对DCT转换差异总和 

‘psnr’

量化误差平方和 (avoid, 低品质) 

‘bit’

对特定块需要的比特数 

‘rd’

动态失真优化, 最慢

‘zero’

0 

‘vsad’

绝对垂直差异总和 

‘vsse’

垂直差异平方和 

‘nsse’

噪声保护的差的平方和

‘w53’

5/3 小波(变换), 只用于下雪场景 

‘w97’

9/7 小波(变换), 只用于下雪场景 

‘dctmax’
‘chroma’
pre_dia_size integer (encoding,video)

设置运动估计预测的区域类型和尺寸
subq integer (encoding,video)

设置子图元运动估计质量
dtg_active_format integer
me_range integer (encoding,video)

设置运动矢量极限范围 (DivX是1023).
ibias integer (encoding,video)

设置组内量化偏差
pbias integer (encoding,video)

设置集间量化偏差
color_table_id integer
global_quality integer (encoding,audio,video)
coder integer (encoding,video)

可能值:

‘vlc’

可变长编码 / huffman编码 

‘ac’

算术编码 

‘raw’

raw (不进行编码) 

‘rle’

游程长度编码 

‘deflate’

紧缩编码 

context integer (encoding,video)

设置上下文模型
slice_flags integer
xvmc_acceleration integer
mbd integer (encoding,video)

设置宏块选择算法 (高质量模式).

可能值:

‘simple’

使用mbcmp,宏块比较 (默认) 

‘bits’

减少数据量

‘rd’

失真率优化 

stream_codec_tag integer
sc_threshold integer (encoding,video)

设置场景变化阀值
lmin integer (encoding,video)

设置最小拉格朗日(lagrange)因子(VBR).
lmax integer (encoding,video)

设置最大拉格朗日(lagrange)因子 (VBR).
nr integer (encoding,video)

设置降噪
rc_init_occupancy integer (encoding,video)

设置解码开始前需加载到RC缓冲区的数据量
flags2 flags (decoding/encoding,audio,video)

可能值:

‘fast’

允许不符合规范的加速技巧。

‘sgop’

失效, 使用mpegvideo私有选项 

‘noout’

跳过比特流编码 

‘ignorecrop’

忽略sps传来的遮蔽信息 

‘local_header’

在全局头而不是每个关键帧放置扩展数据 

‘chunks’

帧数据可被分割成多个块

‘showall’

显示第一个关键帧前的所有帧(一般用于跳跃定位后的播放,默认是从最近关键帧开始显示,因为之前的帧不一定能够正确构建) 

‘skiprd’

失效,使用了mpegvideo私有选项. 

‘export_mvs’

支持它的编码中运动矢量导出给帧间数据(见`AV_FRAME_DATA_MOTION_VECTORS`) 。参考` doc/examples/export_mvs.c` 

error integer (encoding,video)
qns integer (encoding,video)

失效, 使用了mpegvideo私有选项
threads integer (decoding/encoding,video)

可能值:

‘auto’

检测使用一个合适的线程数 

me_threshold integer (encoding,video)

设置运动估计的阀值
mb_threshold integer (encoding,video)

设置宏块阀值
dc integer (encoding,video)

设置intra_dc_precision.
nssew integer (encoding,video)

设置nsse权重.
skip_top integer (decoding,video)

跳过顶部设置多个宏块行
skip_bottom integer (decoding,video)

跳过底部设置多个宏块行
profile integer (encoding,audio,video)

可能值:

‘unknown’
‘aac_main’
‘aac_low’
‘aac_ssr’
‘aac_ltp’
‘aac_he’
‘aac_he_v2’
‘aac_ld’
‘aac_eld’
‘mpeg2_aac_low’
‘mpeg2_aac_he’
‘mpeg4_sp’
‘mpeg4_core’
‘mpeg4_main’
‘mpeg4_asp’
‘dts’
‘dts_es’
‘dts_96_24’
‘dts_hd_hra’
‘dts_hd_ma’
level integer (encoding,audio,video)

可能值:

‘unknown’
lowres integer (decoding,audio,video)

在 1= 1/2, 2=1/4, 3=1/8 解码.
skip_threshold integer (encoding,video)

设置跳帧阀值
skip_factor integer (encoding,video)

设置跳帧因子
skip_exp integer (encoding,video)

设置跳帧指数。 负值和正值除了归一化原因以外表现相同。正值存在的原因主要是兼容性,所以并不常见
skipcmp integer (encoding,video)

设置跳帧压缩功能

可能值:

‘sad’

绝对差异总和, 最快(默认) 

‘sse’

误差平方和 

‘satd’

绝对Hadamard转换差异总和

‘dct’

绝对DCT转换差异总和 

‘psnr’

量化误差平方和 (avoid, 低品质) 

‘bit’

对特定块需要的比特数 

‘rd’

动态失真优化, 最慢

‘zero’

0 

‘vsad’

绝对垂直差异总和 

‘vsse’

垂直差异平方和 

‘nsse’

噪声保护的差的平方和

‘w53’

5/3 小波(变换), 只用于下雪场景 

‘w97’

9/7 小波(变换), 只用于下雪场景 

‘dctmax’
‘chroma’
border_mask float (encoding,video)

增加接近边界宏块量化。
mblmin integer (encoding,video)

设置最小的宏块的拉格朗日(lagrange)因子(VBR).
mblmax integer (encoding,video)

设置最大的宏块的拉格朗日(lagrange)因子 (VBR).
mepc integer (encoding,video)

设置运动估计比特率损失补偿(1.0 = 256).
skip_loop_filter integer (decoding,video)
skip_idct integer (decoding,video)
skip_frame integer (decoding,video)

让解码器丢弃处理由选项值指定的帧类型

skip_loop_filter 跳过循环帧
skip_idct 跳过IDCT/量化(dequantization)帧
skip_frame 跳过解码

可能值:

‘none’

不抛弃帧

‘default’

抛弃无用帧,例如尺寸为0的帧

‘noref’

抛弃所有非参考帧

‘bidir’

抛弃所有双向(预测)帧

‘nokey’

除了关键帧外都抛弃

‘all’

抛弃所有帧 

默认值就是‘default’.
bidir_refine integer (encoding,video)

细化两个运动矢量用于双向宏块
brd_scale integer (encoding,video)

对动态B帧判定是否下变换
keyint_min integer (encoding,video)

设置IDR帧集的最小间隔
refs integer (encoding,video)

为运动补偿设置参考帧 compensation.
chromaoffset integer (encoding,video)

设置色度中qp对亮度的抵消
trellis integer (encoding,audio,video)

设置比率失真优化
sc_factor integer (encoding,video)

设置一个值(一个补偿因子)乘以qscale添加到每一帧的scene_change_score
mv0_threshold integer (encoding,video)
b_sensitivity integer (encoding,video)

调整b_frame_strategy敏感性为1.
compression_level integer (encoding,audio,video)
min_prediction_order integer (encoding,audio)
max_prediction_order integer (encoding,audio)
timecode_frame_start integer (encoding,video)

设置GOP时间码帧开始数,非丢帧格式
request_channels integer (decoding,audio)

设置所需数字音频轨道/通道
bits_per_raw_sample integer
channel_layout integer (decoding/encoding,audio)

可能值:
request_channel_layout integer (decoding,audio)

可能值:
rc_max_vbv_use float (encoding,video)
rc_min_vbv_use float (encoding,video)
ticks_per_frame integer (decoding/encoding,audio,video)
color_primaries integer (decoding/encoding,video)
color_trc integer (decoding/encoding,video)
colorspace integer (decoding/encoding,video)
color_range integer (decoding/encoding,video)
chroma_sample_location integer (decoding/encoding,video)
log_level_offset integer

设置日志层次
slices integer (encoding,video)

设置划片数,用于并行编码
thread_type flags (decoding/encoding,video)

选择多线程方式

使用‘frame’会导致每个线程解码延迟,所以如果客户端不提供未来帧状况就不应该使用

可能值:

‘slice’

每次解码不超过一个帧的多块数据

划片多线程只用于视频划片编码工作

‘frame’

一次解码多个帧 

默认值是 ‘slice+frame’.
audio_service_type integer (encoding,audio)

设置音频服务类型。

可能值:

‘ma’

主要音频服务 

‘ef’

特效 

‘vi’

视障 

‘hi’

听障 

‘di’

对话 

‘co’

评论 

‘em’

紧急情况 

‘vo’

画外音 

‘ka’

卡拉OK 

request_sample_fmt sample_fmt (decoding,audio)

设置音频解码偏好。默认是none
pkt_timebase rational number
sub_charenc encoding (decoding,subtitles)

设置输入的字幕字符编码
field_order field_order (video)

设置/覆盖场序。可能值是:

‘progressive’

逐行 

‘tt’

隔行,顶场优先编码/显示

‘bb’

隔行,底场优先编码/显示

‘tb’

隔行,顶场优先编码,低场优先显示

‘bt’

隔行,底场优先编码,低场优先显示

skip_alpha integer (decoding,video)

设置为1来禁止处理透明度。不同的值可以类似一个‘灰色(gray)’蒙在画面上。默认值是0。
codec_whitelist list (input)

"," 分隔的允许的解码器列表。 默认是都允许
dump_separator string (input)

指定用于在命令行分隔参数、选项域的字符串。例如可以设置一个回车换行作为分隔:

ffprobe -dump_separator "

                      "  -i ~/videos/matrixbench_mpeg2.mpg

标签: none

添加新评论