Bootstrap

【音视频相关】qmin&qmax 视频码率

背景

在对编码器的Context进行反复折腾,设置各种bit_rate, bit_rate_tolerance, rc_max_rate, rc_max_available_vbv_use,发现平均码率似乎能够降低,但是峰值码率总是很高。

后来想了一下如果在质量相同的情况下对一个视频进行编解码,似乎很难将做到编码的码率小于解码的码率。因为H264压缩做得那么好,已经压缩后的H264视频,应该几乎无法进行再次压缩了。

所以换一个思路来进行控制码率,就是控制视频质量,如果允许降低部分视频质量,码率自然可以得到降低。

实验

通过观察一般的视频文件,发现其 q:2-31,于是对编码器的 Context->qminContext->qmax 进行调整,期望通过修改这两个值实现质量的更改.

qmin 最小量化系数 Q值越小,压缩程度越小,画面越清晰,文件大小越大
qmax 最大量化系数 (该参数对码率也会有影响,但是如果qmax过大,会存在明显间歇性的清晰度下降)

实验结果如下:

idgoprateinputBpsqminqmaxoutMinBpsoutMaxBpsoutAvgBps
origin12null660K231495K901K686K
1600.8660K231315K1229K711K
2600.8660K1031313K1137K737K
3600.8660K241260K888K517K
4600.8660K1041302K794K512K
5600.8660K3031300K1121K715K
6600.8660K1045282K732K503K

峰值一般出现在对视频进行贴图时

结论

  1. 通过设置qmin、qmax 可以起到降低码率的效果
  2. 设置qmin 可以降低部分峰值码率
  3. 设置qmax 对码率的影响较大,对降低平均码率及峰值码率都有较明显的效果

补充

  • 未进行实时更改测试,暂不确定qmin, qmax是否能够进行实时修改
  • 另有两个参数 qblur 表示Q值的比例随时间消减的程度 ,qcompress 表示Q值的帧间变化范围,可能对质量的限制有帮助,暂未测试。

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;