美文网首页FFPlay专辑
FFplay文档解读-4-编解码器选项一

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

作者: 张芳涛 | 来源:发表于2018-11-15 14:47 被阅读11次

    前言

    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

    相关文章

      网友评论

        本文标题:FFplay文档解读-4-编解码器选项一

        本文链接:https://www.haomeiwen.com/subject/yfjyfqtx.html