iOS audiounit问题记录2

1记录iOS对讲中的不常见问题

(1)采集音频说话声音很大的时候出现音频被压缩音量(需要加效果器)(如果采集和播放端使用的是同一个audiounit;VPIO模式;没有套augraph)

改:[augraph + dynamicprocessing effect + 采集端unit Vpio (+dynamicprocess unit)+ 32位精度转换 ]+ 播放端unit VPIO + session(ModeDefault+ categoryPlayandRecord +OptionDefaultTospeaker+enableBluetooth +OverrideDefaulttoSpeaker)+ 采集端有audiounit输出来拉动整个数据流,需要以0填充(这里由于采集端有个输出,播放端也是输出,有个先开压制后开的问题),并且回调函数使用NotifyRender回调;

    注意不同型号的手机采集回调字节数不固定;

       使用压缩效果器,需要关闭audiounit采集端的自动增益优化, enableAGC那个属性需要关闭,这样数据流才避免了因为内部代码优化而出现骤降;

(2)发现 (1)采集的音频有低频能量丢失

      增加:audiounitsetproperty(kaudiounitproperty_RenderQuality)

     x修改:mode改成VoiceChat +playandrecord + option:【allowBluetooth + duckwithother 】+ 播放端的unit改成remote IO 

 

 (3) 基于(2)发现对讲中切换到蓝牙耳机,采集没声音

     蓝牙采集本身数据比外放采集每次回调的量就大,所以要,增大开的采集空间;采集端renderdata的bufflist的大小要开大一些;

     适配dynamicprocess unit的帧长,audiounitsetproperty(dyprocessUnit, kAudioUnitProperty_MaximumFramesPerSlice,scope_global,outbus,8192)用于指定audio unit应准备响应于渲染调用而产生的音频数据最大帧数;

  session mode 由voicechat 改为videochat;调整下播放端的unit的音频质量kaudiounit_renderQuality=max

(4)基于(3)出现部分手机,重复开启关闭播放,二次播放的声音非常小,在不kill整个程序的情况下,关闭audiounit后重启,部分手机播放声音会变小

       改:audiosession :bluetooth + duckwithother +defaulttospeaker,播放端的unit改为VPIO类型

 

posted on 2022-02-09 20:34  邗影  阅读(8)  评论(0)    收藏  举报

导航