ffmpeg,X264编码结果I帧QP比P帧还大
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帧还大的更多相关文章
- WebRTC VideoEngine超详细教程(三)——集成X264编码和ffmpeg解码
转自:http://blog.csdn.net/nonmarking/article/details/47958395 本系列目前共三篇文章,后续还会更新 WebRTC VideoEngine超详细教 ...
- ffmpeg音频编码
在弄音频采集时,需要设置缓存的大小,如果只是简单的采集和直接播放PCM数据,缓存的大小一般不影响播放和保存. 但是,如果需要使用FFMpeg音频编码,这时,音频缓存的大小必须设置av_samples_ ...
- (转)x264 编码流程
转自:http://alphamailpost.blog.163.com/blog/static/20111808120128111160728/ http://www.usr.cc/thread-5 ...
- X264编码流程详解(转)
http://blog.csdn.net/xingyu19871124/article/details/7671634 对H.264编码标准一直停留在理解原理的基础上,对于一个实际投入使用的编码器是如 ...
- 视频x264编码浅析
声明 x264_param_t 结构体变量: x264_param_t params; x264_param_default_preset(¶ms, "ultrafast&q ...
- ffmpeg x264编译与使用介绍
问题1:我用的是最新版本的ffmpeg和x264,刚刚编译出来,编译没有问题,但是在linux 环境使用ffmpeg的库时发现报错error C3861: 'UINT64_C': identifier ...
- ffmpeg x264安装
fmpeg安装第三方编码器(encoder)库,ffmpeg编码h264(完) ffmpeg安装第三方编码器(encoder)库 关键词:ffmpeg.编码h264.第三方encoder 安装好了ff ...
- JavaCV FFmpeg AAC编码
上次成功通过FFmpeg采集麦克风的PCM数据,这次针对上一次的程序进行了改造,使用AAC编码采集后的数据. (传送门) JavaCV FFmpeg采集麦克风PCM音频数据 采集麦克风数据是一个解码过 ...
- Android camera采集视频 X264编码
参考 http://blog.csdn.net/zblue78/article/details/6058147 感谢 ExperiencesOfCode 硬件平台:CPU Intel G630 @2. ...
随机推荐
- Linux如何查看当前占用CPU或内存最多的K个进程
一.可以使用以下命令查使用内存最多的K个进程 方法1: ps -aux | sort -k4nr | head -K 如果是10个进程,K=10,如果是最高的三个,K=3 说明:ps -aux中(a指 ...
- eclipse 下调整jdk和tomcat的jvm参数
eclipse 下调试和运行,往往会出现调整java.lang.OutOfMemoryError: Java heap space 产生的原因我猜测是使用了maven,subversion,myla ...
- DateFormat 中间加别的字符
private static DateFormat dateTime = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
- [CSAPP-II] 链接[符号解析和重定位] 静态链接 动态链接 动态链接接口
1 平台 转http://blog.csdn.net/misskissc/article/details/43063419 1.1 硬件 Table 1. 硬件(lscpu) Architecture ...
- Configuration对象
Configuration对象 Hibernate的持久化操作离不开SessionFactory对象,使用该对象的openSession()方法可以打开Session对象.而SessionFactor ...
- java初始化笔记
构造器初始化static块与非static块区别:对象创建时都做块的初始化,非static块仅在实例创建时初始化,static块在类被第一次加载时初始化数组初始化注意点:1.数组定义时最好在定义的同时 ...
- CodeForces 651C Watchmen map
Watchmen are in a danger and Doctor Manhattan together with his friend Daniel Dreiberg should warn t ...
- BZOJ 3640 JC的小苹果(逆矩阵)
题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3640 题意:给出一个无向图,从1走到n.开始是血量H,从u到达v时血量减少a[v] ...
- [HDOJ5783]Divide the Sequence(贪心)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5783 题意:给n个数,要求划分成多个段,使得每一个段的任意前缀和都不小于0. 从后往前截取,这样不会影 ...
- Maven初学
先上几张霸气的图: