【问题标题】:play sound while recording fails录制失败时播放声音
【发布时间】:2011-11-30 23:06:09
【问题描述】:

我有一个处理录音的 3rd 方 SDK。录制开始时有回调。在回调中,我试图播放声音以向用户表明设备正在收听(如 Siri,或任何其他语音识别往往会这样做),但是当我尝试时,我收到以下错误:

AURemoteIO::ChangeHardwareFormats: 错误 -10875

我尝试使用 AudioServicesPlaySystemSound 和 AVAudioPlayer 播放声音,结果相同。声音在其他时间播放良好,根据错误我的假设是硬件级别的播放和录制之间存在不兼容。谁能澄清这个错误,或者给我一个可能的解决方法的提示?

【问题讨论】:

  • 从那以后我发现 SDK 有一种方法可以在录制开始时对声音进行队列播放!...只是它不能正常工作。它在您要求开始录制时播放,而不是在实际开始时播放,因此毫无意义,我又回到了原点。

标签: ios audio core-audio record


【解决方案1】:

在开始 RemoteIO 音频单元录制之前,请确保已为 Play_and_Record 初始化并配置了音频会话。

【讨论】:

  • 它是我在第 3 方 SDK 调用之前为播放和录制而初始化的。也许他们正在内部将其更改为仅记录?如果他们这样做,这是他们应该预料到的错误吗?
【解决方案2】:

您不应该也很可能无法在 RemoteIO 录音回调中开始播放声音。只在回调中设置一个布尔标志来指示应该播放声音。从主 UI 运行循环播放声音。

【讨论】:

  • 回调在主线程上执行。从那以后,我试图从一个子线程播放声音,并且有延迟,并且明确地在主线程上(以防我错了,它不在主线程上)试图绕过任何线程与打嗝有关,但没有效果。我似乎与音频硬件本身有关。
【解决方案3】:

我的问题与外部 SDK 以及它们如何处理音频接口有关。当您要求 SDK 开始录制时,它们会覆盖所有内容,如果您收回控制权,则会中断录制会话。因此,在该 SDK 的上下文中,除非他们修复 SDK,否则无法解决它。

【讨论】:

    猜你喜欢
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    • 2012-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-16
    • 1970-01-01
    相关资源
    最近更新 更多