录制失败时播放声音
Posted
技术标签:
【中文标题】录制失败时播放声音【英文标题】:play sound while recording fails 【发布时间】:2011-11-30 23:06:09 【问题描述】:我有一个处理录音的 3rd 方 SDK。录制开始时有回调。在回调中,我试图播放声音以向用户表明设备正在收听(如 Siri,或任何其他语音识别往往会这样做),但是当我尝试时,我收到以下错误:
AURemoteIO::ChangeHardwareFormats: 错误 -10875
我尝试使用 AudioservicesPlaySystemSound 和 AVAudioPlayer 播放声音,结果相同。声音在其他时间播放良好,根据错误我的假设是硬件级别的播放和录制之间存在不兼容。谁能澄清这个错误,或者给我一个可能的解决方法的提示?
【问题讨论】:
从那以后我发现 SDK 有一种方法可以在录制开始时对声音进行队列播放!...只是它不能正常工作。它在您要求开始录制时播放,而不是在实际开始时播放,因此毫无意义,我又回到了原点。 【参考方案1】:在开始 RemoteIO 音频单元录制之前,请确保已为 Play_and_Record 初始化并配置了音频会话。
【讨论】:
它是我在第 3 方 SDK 调用之前为播放和录制而初始化的。也许他们正在内部将其更改为仅记录?如果他们这样做,这是他们应该预料到的错误吗?【参考方案2】:您不应该也很可能无法在 RemoteIO 录音回调中开始播放声音。只在回调中设置一个布尔标志来指示应该播放声音。从主 UI 运行循环播放声音。
【讨论】:
回调在主线程上执行。从那以后,我试图从一个子线程播放声音,并且有延迟,并且明确地在主线程上(以防我错了,它不在主线程上)试图绕过任何线程与打嗝有关,但没有效果。我似乎与音频硬件本身有关。【参考方案3】:我的问题与外部 SDK 以及它们如何处理音频接口有关。当您要求 SDK 开始录制时,它们会覆盖所有内容,如果您收回控制权,则会中断录制会话。因此,在该 SDK 的上下文中,除非他们修复 SDK,否则无法解决它。
【讨论】:
以上是关于录制失败时播放声音的主要内容,如果未能解决你的问题,请参考以下文章