Hi all,
测试TI8148(DVRRDK4.0)编码效率的时候发现,实际传输的码率最大值普遍超过设置的码率,
低码率下平均值也经常超过设置的码率参数。编码方式使用的H264 HP profile。
而且设置动态码率(VBR)和静态码率(CBR)参数也是同样的效果,好像这个参数不起作用。
下图是我们测试的部分结果,可以看出来特别是设置为低码率的时候,码率控制的很不好,有时会超出很多。
我们设置码率和控制方式的函数使用如下:
/* 设置码率 */ int Venc_setVideoBitRate(int chId,int BitRate) { VENC_CHN_DYNAMIC_PARAM_S params; memset(¶ms, 0, sizeof(params)); params.targetBitRate = BitRate * 1000; Venc_setDynamicParam(chId, 0, ¶ms, VENC_BITRATE); return 0; } /*设置码率控制(VBR、CBR) */ int Venc_setRateControlAlgo(int chId,int value) { VENC_CHN_DYNAMIC_PARAM_S params; memset(¶ms, 0, sizeof(params)); params.rcAlg = value; Venc_setDynamicParam(chId,0,¶ms,VENC_RCALG); return 0; }
我们希望当设置成CBR的时候,码率能始终控制在设置的范围之下。而不是经常超出设置的范围
希望能够提供一些帮助,多谢!
bolin chen:
回复 Eason Wang:
Eason ,
通过增大qpMaxI和qpMinI的值,改善了码流的控制,但是在码率设置为256kbps时有时候还是会超出设定的值,
是不是还有其他方式来控制码流的大小呢?多谢