webrtc windows api音频采集总结

本文总结了WebRTC在Windows平台下使用API进行音频采集的实现细节,包括线程控制、事件驱动的音量设置、异常处理以及播放延时的自动调整策略,旨在最小化端到端音频通话的延迟。
摘要由CSDN通过智能技术生成

最近看了一下webrtc中音频采集部分代码,重点查看了采用windows api接口的实现方式。

代码文件名称:audio_device_wave_win.cc 和audio_device_wave_win.h

AudioDeviceWindowsWave类中创建了一个线程,线程调用函数为ThreadFunc,并在其中调用ThreadProcess函数,线程的调用通过_timeEvent事件进行控制,而_timeEvent中通过timer触发线程的周期性调用,周期为TIMER_PERIOD_MS = 2,说明为2ms调用1次。同时为了对声卡音量进行设置,创建2个线程分别设置音量和获取音量,线程函数为:GetCaptureVolumeThread()和 SetCaptureVolumeThread。也采用事件驱动方式实现。

异常处理:

 如果timer两次调用间隔超过7ms,且连续多次出现,则说明可能有异常发生,则对timer进行重置。

对播放的处理:

如果连续两次播放间隔超过某一门限(5ms), 则进入PlayProc()接口,获取播放buffer中当前没有播放的数据长度,即播放延时。根据此播放延时,自动调整播放缓冲区的延时值(_minPlayBufDelay,_playBufDelay和_waitCo

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值