zoukankan      html  css  js  c++  java
  • ffmpeg参数设置,AVCodecContext设置, h264 profile

     c->profile  =FF_PROFILE_H264_MAIN                 ;

    FFmpeg and x264 Encoding Guide 参数说明:http://ffmpeg.org/trac/ffmpeg/wiki/x264EncodingGuide

    preset 与编码速度和质量相关

    av_opt_set(c->priv_data, "preset", "slow", 0);  Current presets in descending order of speed are: ultrafast,superfastveryfastfasterfastmediumslowslowerveryslow,placebo.

    priv_data  属于每个编码器特有的设置域,用av_opt_set 设置

    2014/5/29 :今天发现 av_opt_set(enc_ctx->priv_data, "preset", "slow", 0);   slow的编码质量比medium(默认值)好多了。

    固定码率150K,设置slow时:编码速度:245 fps 4ms

    [libx264 @ 014bbb40] frame I:38 Avg QP:33.69 size: 3763
    [libx264 @ 014bbb40] frame P:262 Avg QP:35.79 size: 381

    meidum 时:编码速度:335 fps 2ms,

    [libx264 @ 018dbb40] frame I:38 Avg QP:34.33 size: 3234
    [libx264 @ 018dbb40] frame P:262 Avg QP:37.83 size: 455

    veryslow 时:编码速度:140 fps 7ms

    [libx264 @ 0187cb40] frame I:38 Avg QP:35.10 size: 3582
    [libx264 @ 0187cb40] frame P:262 Avg QP:37.24 size: 405

    如何设置固定码率编码 

    CBR (Constant Bit Rate)

    There is no native CBR mode, but you can "simulate" a constant bit rate setting by tuning the parameters of ABR, like

    ffmpeg -i input -c:v libx264 -b:v 4000k -minrate 4000k -maxrate 4000k -bufsize 1835k out.m2v
    

    in this example, -bufsize is the "rate control buffer" so it will enforce your requested "average" (4000k in this case) across each 1835k worth of video. So basically it is assumed that the receiver/end player will buffer that much data so it's ok to fluctuate within that much.

    Of course, if it's all just empty/black frames then it will still serve less than that many bits/s (but it will raise the quality level as much as it can, up to the crf level).

    只设置bit_rate是平均码率,不一定能控制住

    c->bit_rate = 400000;
    c->rc_max_rate = 400000;
    c->rc_min_rate = 400000;

    提示  [libx264 @ 00c70be0] VBV maxrate specified, but no bufsize, ignored   

    再设置  c->rc_buffer_size = 200000;  即可。

    如此控制后编码质量明显差了。。。

  • 相关阅读:
    判断输入的年份是闰年还是平年!!!
    键盘接收数,接收运算符号进行运算!!
    eclipse项目上如何传到码云上!新手,简单易懂,希望对你有所帮助。
    jquery dialog弹出框简单写法和一些属性的应用,写的不好,大佬勿喷!谢谢!
    新手冒泡排序,随机生成十个数。
    新手java九九乘法表
    Lambda表达式
    如何删除gitee仓库的文件
    Collection方法
    java冒泡排序的几种写法
  • 原文地址:https://www.cnblogs.com/mlj318/p/3068737.html
Copyright © 2011-2022 走看看