【发布时间】:2012-03-20 09:56:48
【问题描述】:
我们的应用程序使用 remoteIO(音频单元)从麦克风获取音频输入,并通过 DSP 实时处理它,它有一个回调函数为我提供缓冲区,我正在处理它。
同时,我们需要通过avAudioPlayer播放声音。
我在我的初始化中输入了这个:(将声音路由到扬声器并让它播放和录制)
UInt32 sessionCategory = kAudioSessionCategory_PlayAndRecord;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);
但后来我看到了一些奇怪的东西。声音是从小型扬声器播放出来的——你在打电话时用来戴上耳朵的那个。
然后我做了一个诡计。 我已经看到,为了将声音真正路由到扬声器,我必须播放一些东西并同时执行上面的这 4 行。 如果我这样做 1 次,那么声音会永远回到扬声器。 我用一个调用该方法的计时器来做到这一点,当这个方法执行它们时,我用 avaudioPlayer 播放声音,然后修复它并将声音路由到扬声器。
有人对此有任何解决方案或解释吗? 我真的需要通过扬声器播放声音,没有技巧。
【问题讨论】:
标签: objective-c avaudioplayer core-audio audiounit