webrtc 消费者从neteq定期取音频引起的累积延时误差问题

背景:

从webrtc定期取音频数据, 发现通话时间越长, 音频包缺失的越多.

从包的字节数计算出每个包的播放时间t, 一分钟取出来的包拼不成一分钟的时间长度. 

 

问题分析:

consumer线程每次sleep(10ms - delta_t), delta_t 包含从neteq取数据、分发出去的时间. 

但是每次sleep()的时间不是完全精确的, 比如十次sleep中有一次多了1ms. 累积下来就导致了较大的误差.

 

问题解决: 

引入总时间量, 从consumer线程开始, 到现在应该抛出来多少次, 实际抛出来多少次, 如果有误差, 及时调成sleep(10-5-delta_t)时间, 相当于往前进5ms, 缩小累积误差.

 

posted @ 2024-06-21 17:52  yushimeng  阅读(6)  评论(0编辑  收藏  举报