webrtc QOS笔记二 音频buffer数据不足生成很多gap的问题

webrtc QOS笔记二 音频buffer数据不足生成很多gap的问题


记录个iusse.

插入音频数据后,GetAudioInternal 进行操作决策:

Normal:正常播放。
Acceleration:变声不变调的减速播放算法。
Preemptive expand:变声不变调的减速播放算法。
Expand:由 NetEq 或解码器生成的丢包隐藏。
Merge:如果上一次是 Expand 造假出来的数据,那为了听起来更舒服一些,会跟正常数据包做一次融合算法。
Comfort noise (CNG):是用来产生舒适噪声的,比单纯的静音包听起来会更舒服的静音状态。
Expand(PLC):丢包补偿,最重要的无中生有算法模块,解决 “真丢包” 时没数据的问题,造假专业户 ;

测试网络良好不丢包,关闭视频,单独听音频,存在很多gap,主要原因为缓存数据不足.


high limit : 目标水位,图中红色曲线,缓存水位高于此水位会进行加速播放
low limit : 低水位,图中蓝色曲线,缓存水位低于此水位会进行拉伸音频样本减速速播放
buffer limit : 当前音频缓存水位,图中黄色曲线

可见当前高低水位分别在220ms和160ms左右,缓存水位常小于低水位,造成数据不足产生gap。

定位到原因,就对拉升做做文章就好了,调整expand拉升参数,使水位稳定到低水位上

前后波形对比:
红色箭头指示部分gap位置

参考:
https://developer.aliyun.com/article/782756?

posted @ 2023-02-23 17:57  靑い空゛  阅读(116)  评论(0编辑  收藏  举报