enc_ctx->profile =FF_PROFILE_H264_MAIN ;
enc_ctx->time_base.den = 24;
enc_ctx->time_base.num = 1;
enc_ctx->gop_size = 8; /* emit one intra frame every twelve frames at most */
enc_ctx->pix_fmt = AV_PIX_FMT_YUV420P;
enc_ctx->max_b_frames = 0;
enc_ctx->has_b_frames = 0;
av_opt_set(enc_ctx->priv_data, "preset", "slow", 0); ///
av_opt_set(enc_ctx->priv_data, "tune", "zerolatency", 0);

enc_ctx->bit_rate = br ;
enc_ctx->rc_min_rate = br ;
enc_ctx->rc_max_rate = br ;
enc_ctx->bit_rate_tolerance = br;
enc_ctx->rc_buffer_size = br;
enc_ctx->rc_initial_buffer_occupancy = enc_ctx->rc_buffer_size*3/4;
enc_ctx->rc_buffer_aggressivity = (float)1.0;
enc_ctx->rc_initial_cplx = 0.5;
enc_ctx->i_quant_factor = -1;

基本设置,固定码率150k,enc_ctx->i_quant_factor默认为 -1,编码结果

[libx264 @ 005cbb40] frame I:38 Avg QP:36.34 size: 4044
[libx264 @ 005cbb40] frame P:262 Avg QP:35.27 size: 339

I的质量比P还差。

ffmpeg中i_quant_factor的解释

/**
* qscale factor between P and I-frames
* If > 0 then the last p frame quantizer will be used (q= lastp_q*factor+offset).
* If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset).
* - encoding: Set by user.
* - decoding: unused
*/
float i_quant_factor;

enc_ctx->i_quant_factor = -0.7;时:

[libx264 @ 006ecb40] frame I:38 Avg QP:36.11 size: 4067
[libx264 @ 006ecb40] frame P:262 Avg QP:34.89 size: 337

enc_ctx->i_quant_factor = -1.4;时

[libx264 @ 0276cb40] frame I:38 Avg QP:35.34 size: 4439
[libx264 @ 0276cb40] frame P:262 Avg QP:35.17 size: 280

enc_ctx->i_quant_factor = -2;时

[libx264 @ 02beda40] frame I:38 Avg QP:34.59 size: 4155
[libx264 @ 02beda40] frame P:262 Avg QP:33.71 size: 323

i_quant_factor 相当于x264的参数ipratio

默认值:1.40

修改I帧量化值相比P帧量化值的目标平均增量。越大的值会提高I帧的品质。

原因估计:应该是i_quant_factor 绝对值越大,I帧质量越好。还有猜测可能是码率不够,限制了I帧的比特数。

设置固定码率300k时:

[libx264 @ 016dbb40] frame I:38 Avg QP:29.21 size: 6367
[libx264 @ 016dbb40] frame P:262 Avg QP:29.60 size: 622

ffmpeg,X264编码结果I帧QP比P帧还大的更多相关文章

  1. WebRTC VideoEngine超详细教程(三)——集成X264编码和ffmpeg解码

    转自:http://blog.csdn.net/nonmarking/article/details/47958395 本系列目前共三篇文章,后续还会更新 WebRTC VideoEngine超详细教 ...

  2. ffmpeg音频编码

    在弄音频采集时,需要设置缓存的大小,如果只是简单的采集和直接播放PCM数据,缓存的大小一般不影响播放和保存. 但是,如果需要使用FFMpeg音频编码,这时,音频缓存的大小必须设置av_samples_ ...

  3. (转)x264 编码流程

    转自:http://alphamailpost.blog.163.com/blog/static/20111808120128111160728/ http://www.usr.cc/thread-5 ...

  4. X264编码流程详解(转)

    http://blog.csdn.net/xingyu19871124/article/details/7671634 对H.264编码标准一直停留在理解原理的基础上,对于一个实际投入使用的编码器是如 ...

  5. 视频x264编码浅析

    声明 x264_param_t 结构体变量: x264_param_t params; x264_param_default_preset(&params, "ultrafast&q ...

  6. ffmpeg x264编译与使用介绍

    问题1:我用的是最新版本的ffmpeg和x264,刚刚编译出来,编译没有问题,但是在linux 环境使用ffmpeg的库时发现报错error C3861: 'UINT64_C': identifier ...

  7. ffmpeg x264安装

    fmpeg安装第三方编码器(encoder)库,ffmpeg编码h264(完) ffmpeg安装第三方编码器(encoder)库 关键词:ffmpeg.编码h264.第三方encoder 安装好了ff ...

  8. JavaCV FFmpeg AAC编码

    上次成功通过FFmpeg采集麦克风的PCM数据,这次针对上一次的程序进行了改造,使用AAC编码采集后的数据. (传送门) JavaCV FFmpeg采集麦克风PCM音频数据 采集麦克风数据是一个解码过 ...

  9. Android camera采集视频 X264编码

    参考 http://blog.csdn.net/zblue78/article/details/6058147 感谢 ExperiencesOfCode 硬件平台:CPU Intel G630 @2. ...

随机推荐

  1. acdream 1093 女神的正多面体

    http://acdream.info/problem?pid=1093 女神的正多面体 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 12 ...

  2. 关于mysql varchar 类型的最大长度限制

    Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This ...

  3. Python3基础 三元表达式实例

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

  4. 在主类E的main方法中,创建类B 的对象并赋给父类A的对象a,使用上转型对象a来测试上转型对象的一些特性。

    public class A { private int a=1; public int getA() { return a; } public void setA(int a) { this.a = ...

  5. ZOJ 1015 Fishing Net(判断弦图)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=15 题意:给定一个图.判断是不是弦图? 思路:(1)神马是弦图?对于一 ...

  6. Cheatsheet: 2014 01.15 ~ 01.30

    Web How to upload file in Node.js Create Echo Server in Node.js Near-Realtime Analytics with MongoDB ...

  7. SQL设置语言,返回中文”星期几”格式

    SQL中语言表: SELECT * FROM sys.syslanguages   eg: SET LANGUAGE 简体中文 --设置语言 PRINT DATENAME(weekday,GETDAT ...

  8. HTML Meta标签中的viewport属性含义及设置

    两篇文章 第1篇文章 第2篇文章 http://blog.hexu.org/archives/1947.shtml 随着高端手机(Andriod,Iphone,Ipod,WinPhone等)的盛行,移 ...

  9. 【VB6笔记-02】从Command中获取链接参数

    Public Sub GetParameters() Dim Para As String Para = Command$() gstrUserID = GetCommandPara(Para, ) ...

  10. Python面向对象入门

    http://www.math.pku.edu.cn/teachers/qiuzy/ds_python/courseware/ 这本书的第二章写的是抽象数据类型和Python类 以前从没想过认真的去写 ...