cqp VS bitrate VS crf [学习笔记]

来源:互联网 发布:广州健坤网络 编辑:程序博客网 时间:2024/06/06 06:49

首先说明,这三个选项cqp  ,bitrate ,crf 互斥,只能设置一个,如果你在设置中同时设置了这三个选项,最后会覆盖掉之前的。


1.bitrate 

参数解释:

--bitrate <integer>     Set bitrate (kbit/s)

以目标位元率来编码视讯。目标位元率模式意味着最终文件的大小是已知的,但最终的品质则位置。此设定通常

与 2-pass 编码一起使用。


2.CQP [恒定量化参数]   

参数解释:

http://forum.doom9.org/archive/index.php/t-89756.html

Constant Quantization Parameter. Also known as "CQ" or "constant quant"

http://blog.yikuyiku.com/?tag=cqp

H.264规范允许每个宏块使用不同的QP。x264目前没有实现这一特性,码率控制算法只会为每一帧生成一个QP。


参数应用:

Ratecontrol:
  -q, --qp <integer>          Force constant QP (0-69, 0=lossless)

在编码使用这个参数,就意味着,强制使用 恒定量化参数了

將值設為0會產生無失真輸出。


3.crf

http://www.360doc.com/content/11/0613/21/3700464_126721552.shtml

当qp是把某个量化值作为目标,而bitrate 是把某个文档的大小作为目标时, crf 则是把某个品质作为目标。


CRF is more efficient than CQP only if you consider the final size.[如果你考虑到最终大小,crf会比cqp更有效一些]

CRF 和 CQP 都是越小越好,

----->

////set bit rate
avctx->bit_rate = ptr_output_ctx->video_rate;//VIDEO_BIT_RATE;
avctx->rc_max_rate = ptr_output_ctx->video_rate;//VIDEO_BIT_RATE;
avctx->rc_min_rate = ptr_output_ctx->video_rate;//VIDEO_BIT_RATE;
avctx->bit_rate_tolerance = ptr_output_ctx->video_rate;//VIDEO_BIT_RATE;
avctx->rc_buffer_size = ptr_output_ctx->video_rate;//VIDEO_BIT_RATE;
avctx->rc_initial_buffer_occupancy = avctx->rc_buffer_size * 3 / 4;
avctx->rc_buffer_aggressivity = (float)1.0;
avctx->rc_initial_cplx = 0.5;

avctx->coder_type = FF_CODER_TYPE_AC;//different codec_type
//
avctx->thread_count = 1;
avctx->cqp = 26
;  //这里cqp 会把之前设置的bitrate 覆盖掉,也就是说encoder会按照设定的qp数值进行编码,而不是bitrate.