前言
Github地址:Github
简书地址:简书
专辑地址:FFplay专辑
6.编解码器选项
libavcodec提供了一些通用的全局选项,可以在所有编码器和解码器上设置。 此外,每个编解码器可以支持所谓的私有选项,这些选项特定于给定的编解码器。
有时,全局选项可能只会影响特定类型的编解码器,并且可能是荒谬的或被其他人忽略,因此需要了解指定选项的含义。 还有一些选项仅用于解码或编码。
可以通过在FFmpeg工具中指定-option值,或通过在AVCodecContext选项中显式设置值或使用“libavutil / opt.h”API进行编程来设置选项。
支持的选项列表如下:
b integer (encoding,audio,video)
以bit/s为单位设置比特率。 默认值为200K。
ab integer (encoding,audio)
设置音频比特率(以位/秒为单位)。 默认值为128K。
bt integer (encoding,video)
设置视频比特率容差(以位/秒为单位)。 在1遍模式中,比特率容差指定速率控制愿意偏离目标平均比特率值的程度。 这与最小/最大比特率无关。 降低公差太大会对质量产生不利影响。
flags flags (decoding/encoding,audio,video,subtitles)
设置通用标志。
可能的取值如下:
| 值 | 解释 |
|---|---|
| mv4 | 按宏块使用四个运动矢量(mpeg4) |
| qpel | 使用1/4像素运动补偿 |
| loop | 使用循环过滤器 |
| qscale | 使用固定的qscale
|
| pass1 | 在第一次通过模式下使用内部2pass速率控制 |
| pass2 | 在第二次通过模式下使用内部2pass速率控制 |
| gray | 仅解码/编码灰度 |
| emu_edge | 不要描边 |
| psnr | 在编码期间设置error[?]变量 |
| truncated | |
| ildct | 使用隔行扫描DCT
|
| low_delay | 强制低延迟 |
| global_header | 将全局标头放在extradata而不是每个关键帧中 |
| bitexact | 仅编写平台,构建和时间无关的数据。 (除了(I)DCT)。 这可确保文件和数据校验和可重现并在平台之间匹配。 它的主要用途是进行回归测试 |
| aic | 应用H263高级帧内编码/ mpeg4交流预测 |
| cbp | 不推荐使用,请改用mpegvideo私有选项 |
| qprd | 不推荐使用,请改用mpegvideo私有选项 |
| ilme | 应用隔行扫描运动估计 |
| cgop | 使用封闭的gop
|
me_method integer (encoding,video)
设置运动估计方法。
可能的取值如下:
| 值 | 解释 |
|---|---|
| zero | 零运动估计(最快) |
| full | 全运动估计(最慢) |
| epzs |
EPZS运动估计(默认) |
| esa |
esa运动估计(别名为完整) |
| tesa | 德莎运动估计 |
| dia |
dia运动估计(epzs的别名) |
| log | 对数运动估计 |
| phods | phods运动估计 |
| x1 |
X1运动估计 |
| hex | 十六进制运动估计 |
| umh | umh运动估计 |
| iter |
iter运动估计 |
extradata_size integer
设置extradata大小。
time_base rational number
设置编解码器时基。
它是表示帧时间戳的基本时间单位(以秒为单位)。 对于固定fps内容,时基应为1 / frame_rate,时间戳增量应相同为1。
g integer (encoding,video)
设置图片组(GOP)大小。 默认值为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帧之间的最大B帧数。
必须是-1到16之间的整数。0表示禁用B帧。 如果使用值-1,它将根据编码器选择自动值。
默认值为0。
b_qfactor float (encoding,video)
在P帧和B帧之间设置qp因子。
rc_strategy integer (encoding,video)
设置ratecontrol方法。
b_strategy integer (encoding,video)
设置策略以在I/P/B帧之间进行选择。
ps integer (encoding,video)
以字节为单位设置RTP有效负载大小。
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)
解决方法不自动检测编码器错误。
可能的取值:
| 值 | 解释 |
|---|---|
| autodetect | |
| old_msmpeg4 | 一些旧的lavc生成了msmpeg4v3文件(没有自动检测) |
| xvid_ilace |
Xvid隔行扫描错误(如果fourcc == XVIX,则自动检测) |
| ump4 | (如果fourcc == UMP4,则自动检测) |
| no_padding | 填充错误(自动检测) |
| amv | |
| ac_vlc | 非法vlc错误(每四个自动检测) |
| qpel_chroma | |
| std_qpel | 旧标准qpel(每个四分之一版本自动检测) |
| qpel_chroma2 | |
| direct_blocksize |
direct-qpel-blocksize bug(根据fourcc/version自动检测) |
| edge | 边缘填充错误(每个fourcc /版本自动检测) |
| hpel_chroma | |
| dc_clip | |
| ms | 解决微软破解解码器中的各种错误。 |
| trunc | 截断的帧 |
lelim integer (encoding,video)
设置亮度的单个系数消除阈值(负值也考虑DC系数)。
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 | 考虑违反规范的事情,并且没有在野外看到错误 |
| compliant | 将所有规范非合规性视为错误 |
| aggressive | 考虑一个理智的编码器不应该做的错误 |
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 differentiable function)。
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 isI isP isB avgQP qComp avgIITex avgPITex avgPPTex avgBPTex avgTex。
maxrate integer (encoding,audio,video)
设置最大比特率容差(以位/秒为单位)。 需要设置bufsize。
minrate integer (encoding,audio,video)
设置最小比特率容差(以位/秒为单位)。 在设置CBR编码时最有用。 它没有什么用处。
bufsize integer (encoding,audio,video)
设置速率控制缓冲区大小(以位为单位)。
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 | fast integer |
| 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兼容的IDCT
|
| arm | |
| altivec | |
| sh4 | |
| simplearm | |
| simplearmv5te | |
| simplearmv6 | |
| simpleneon | |
| simplealpha | |
| ipp | |
| xvidmmx | |
| faani | 浮点AAN IDCT
|
slice_count integer
ec flags (decoding,video)
设置错误隐藏策略。
可能的取值如下:
| 值 | 解释 |
|---|---|
| guess_mvs | 迭代运动矢量(MV)搜索(慢) |
| deblock | 使用强deblock过滤器来修复损坏的MB
|
| favor_inter | 倾向于从前一帧而不是当前帧预测 |
bits_per_coded_sample integer
pred integer (encoding,video)
设定预测方法。
可能的取值如下:
| 值 |
|---|
| left |
| plane |
| median |
aspect rational number (encoding,video)
设置样本宽高比。
sar rational number (encoding,video)
设置样本宽高比。 方面的别名。
debug flags (decoding/encoding,audio,video,subtitles)
打印特定的调试信息。
可能的取值如下:
| 值 | 解释 |
|---|---|
| pict | 图片信息 |
| rc | 速率控制 |
| bitstream | |
| mb_type | 宏块(MB)类型 |
| qp | 每块量化参数(QP)
|
| dct_coeff | |
| green_metadata | 显示即将到来的帧,GoP或给定持续时间的复杂性元数据。 |
| skip | |
| startcode | |
| er | 错误识别 |
| mmco | 内存管理控制操作(H.264)
|
| bugs | |
| buffers | 图片缓冲区分配 |
| thread_ops | 线程操作 |
| nomc | 跳过运动补偿 |
cmp integer (encoding,video)
设置完全比较功能。
可能的取值如下:
| 值 | 解释 |
|---|---|
| sad | 绝对差值之和,快速(默认) |
| sse | 平方误差之和 |
| satd | 绝对Hadamard的总和改变了差异 |
| dct | 绝对DCT转换差异的总和 |
| psnr | 量化误差平方和(avoid, low quality)
|
| bit | 块所需的位数 |
| rd | 速率失真最佳,速度慢 |
| zero | 0 |
| vsad | 绝对垂直差异之和 |
| vsse | 垂直差异的平方和 |
| nsse | 噪声保持平方差的总和 |
| w53 |
5/3小波,仅用于snow场景 |
| w97 |
9/7小波,仅用于snow场景中 |
| dctmax | |
| chroma |