- 当发现p2p的水线超过一定值时,降低视频码率,例如当水位超过低水位时将视频码率降为原来的80%。网络正常的情况下p2p水位值很低,2mbps码率的视频水位值一般在100KB以下,该数值仅供参考,送入体积较大的I帧、网络波动等都会影响水位值。 APP SDK 可通过接口
getStreamBufSize
获取当前水位
-
推流过程中每间隔一定时间(例如1秒)调用
getStreamBufSize
获取获取水位值,由于瞬时速度的波动较大,这里建议使用1秒内的平均传输速度,设置一定长度的队列(例如长度为5,如果调用间隔比较短可以适当加长窗口),将该数值存入队列同时删除队列内最旧的一个数值,去掉一个最高值去掉一个最低值,计算平均值。算出的平均值可用于控制码率,可通过 2mbps 码率的视频水位值 100KB 对应关系做参考计算设置码率变化 -
升码率可采取缓慢提升的方式,探测到合适的码率。升大太多,容易造成水位波动较大
-
用户可结合以上方法实或借鉴cubic拥塞控制算法等的思想现自己的码率自适应策略。
-
设备同 APP 实现原理一致