如何在后台开始录制 iOS 音频会话?

Posted

技术标签:

【中文标题】如何在后台开始录制 iOS 音频会话?【英文标题】:How do I start a Record iOS audio session in the background? 【发布时间】:2013-05-30 14:38:24 【问题描述】:

在我的应用在后台而不是最前沿被唤醒后,我正在尝试启动kAudiosessionCategory_RecordAudio(例如在重大位置更改期间,我看到商店中的其他应用这样做,所以我知道这是可能的) .但是,每当我尝试像这样开始音频会话时

CheckError(AudioQueueStart(queue, NULL), "AudioQueueStart failed");

我收到此错误:

Error: AudioQueueStart failed (-12985)

所以我阅读了这一点,但唯一的建议是将音频会话设置为活动的AudioSessionSetActive(YES),但这也因'!cat' 错误而失败。显然您可以尝试切换音频会话的活动状态,但这对我不起作用。

我设置了音频背景模式 plist 标志并在我的应用程序位于最前端时开始音频会话,然后切换到另一个应用程序正常工作(显示红色条表示它正在录制)。它只是在应用程序不在最前沿时开始音频会话。

谁有一个示例项目我可以看看在后台开始录制音频会话?

注意:我正在寻找一种使用音频队列的解决方案,因为我需要缓冲区中的音频,而不是文件。

【问题讨论】:

【参考方案1】:

事实证明,如果您只需将音频多任务标志添加到 info.plist 并添加适当的重要位置更改 API,Apple 的 SpeakHere 示例代码经过一些修改就会开始在后台录制音频。您可能会在 https://github.com/benvium/SpeakHere 上查看 SpeakHere 的更新版本,因为 Apple 已经有一段时间没有更新它了。

【讨论】:

音频多任务标志到底是什么?请解释【参考方案2】:

目前,iOS 不允许在后台启动音频会话或录音。应用程序必须在前台启动音频,但可以在需要时丢弃任何录制的音频数据,当使用适当的后台模式和音频会话时,这些数据可能在后台。

【讨论】:

像 GPS 导航这样的应用程序如何在当前没有说方向的情况下工作,然后用户切换到音乐应用程序并播放音乐,直到 GPS 导航应用程序说出新的方向,然后音乐应用程序再次接管扬声器。我假设如果您可以在应用处于后台时开始播放,您就可以开始录制。 @hotpaw2,“睡眠通话记录器”的实时应用程序完美运行并支持在后台记录全天。所以应该有一种方法可以在后台记录一整天。这是实时应用链接:itunes.apple.com/en/app/sleep-talk-recorder/id391767653?mt=8 也许这些应用会在前台和一整天进入后台之前启用他们的音频会话。

以上是关于如何在后台开始录制 iOS 音频会话?的主要内容,如果未能解决你的问题,请参考以下文章

iOS 无法在扬声器上播放并将音频会话设置为录制

如何在服务器端录制 WebRTC 视频/音频会话?

使用音频会话录制时如何减少录制噪音?

如何更改录制音频的音高并在后台保存?

Swift IOS 使用 AVFoundation 录制视频和音频

使用PhoneGap在iOS上录制音频[关闭]