在iOS上的背景音频录制

时间:2012-09-21 16:04:41

标签: iphone audio background location recording

我有一个在后台使用位置服务的应用程序。工作良好。 但是我想在某个时刻做的是在应用程序处于后台时检查一些音频级别。由于某种原因,它似乎不起作用。在前台运行时,该功能正常,但在后台时,录音机的平均值和峰值输入始终为-120 ..

这就是我用来做这个伎俩(这似乎不起作用......)

            ....
            [recorder record];
            if (levelTimer == nil) {
                    bgTask = 0;
                    app = [UIApplication sharedApplication];
                    bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
                        [app endBackgroundTask:bgTask];
                    }];
                levelTimer = [NSTimer scheduledTimerWithTimeInterval: 0.02 target: self selector: @selector(levelTimerCallback:) userInfo: nil repeats: YES];
            }
            ...

是的,levelTimerCallback每0.02秒调用一次,即使在后台也是如此,所以我假设beginBackgroundTaskWithExpirationHandler工作正常。

有任何想法或一些提示吗?

3 个答案:

答案 0 :(得分:2)

目前,唯一受支持的iOS设备后台录制方式是在应用程序的plist中包含UIBackgroundModes键的音频,启用适当的音频会话进行录制,并在应用前开始录制(或播放)音频进入后台。

如果应用程序使用音频队列或RemoteIO音频单元API进行录制,缓冲区回调可以将所有音频缓冲区丢弃直到感兴趣的时间,然后计算PCM样本所代表的能量需要的时间。

答案 1 :(得分:-1)

我不认为iPhone会允许在后台录制。当应用程序进入后台时,只允许很少的服务。从逻辑上讲,如果你的应用程序长时间停留在后台,它会消耗大量的电池以及缓冲区来存储音频,除非你有时间和内存管理这些资源。当您将应用程序提交到App Store时,这也会给您的应用带来问题。

虽然您可以参考此链接了解可在后台运行的内容。 我希望这可以帮助你以某种方式清除事物。

iPhone : Running services in the background

祝你好运!!!

答案 2 :(得分:-1)

我知道有一个应用程序有背景录音。 Beatmaker 2.您需要在beatmaker 2下的设备设置中在后台运行。在beatmaker中创建音轨并开始录制。他们使用设备上的主页按钮退出应用程序但仍在录制。您也可以通过不同的界面获得创意。我这样做是为了将iPhone 4线路输入到beatmaker 2的音频轨道中。您可以录制在前台播放的任何内容的音频。 (YouTube视频应用iTunes资料库中的音乐。您也可以在录制后编辑wave。