问题描述
我的应用正在使用 RemoteIO 录制音频。它不做任何播放。 RemoteIO 似乎与 iOS14 中的新声音识别功能广泛兼容,但我在首次启用声音识别时看到了一个小故障。
如果我的应用程序已启动并初始化 RemoteIO,然后打开声音识别(例如通过控制中心),则此后不会调用 RemoteIO 输入回调,直到我拆除音频单元并将其重新设置。所以类似于以下内容:
- 启动应用
- RemoteIO 已初始化并正常工作,可以记录
- 通过设置或控制中心小部件开启声音识别
- 使用已设置的 RemoteIO 开始录制
- 不再调用录音回调
- 虽然没有看到输入回调,但 kAudioOutputUnitProperty_IsRunning 报告为 true,所以音频单元认为它是活动的
- 拆除音频单元
- 重新设置音频单元
- 录音作品
- 缓冲区大小发生了变化,反映了对声音识别功能的音频会话的一些影响
我还注意到,当启用声音识别时,我会快速连续地看到几个(通常是 3 个)AVAudioSession.routeChangeNotifications。在设置 RemoteIO 时禁用声音识别时,我看不到此问题。我正在分配自己的缓冲区,因此它们的大小没有问题。
这里会发生什么?我没有正确处理路线变化吗?似乎没有一个可靠的事件序列可以让我知道何时重置音频单元。
我在这里找到的唯一解决方法是入侵一个计时器,该计时器在开始录制后不久检查回调活动,如果没有看到回调活动,则重置音频单元。总比没有好,但不是超级可靠。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)