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类型
浙公网安备 33010602011771号