FFplay文档解读-4-编解码器选项一

前言

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)。 必须包含在-169之间,默认值为2

qmax integer (encoding,video)

设置最大视频量化器比例(VBR)。 必须包含在-11024之间,默认值为31

qdiff integer (encoding,video)

设置量化器标度(VBR)之间的最大差异。

bf integer (encoding,video)

设置非B帧之间的最大B帧数。

必须是-116之间的整数。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)

设置PI帧之间的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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,723评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,080评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,604评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,440评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,431评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,499评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,893评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,541评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,751评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,547评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,619评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,320评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,890评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,896评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,137评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,796评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,335评论 2 342