在后台iOS中录制分块音频

时间:2011-03-24 16:03:56

标签: iphone ios core-audio audio-recording avaudiorecorder

我正在尝试找出一种在iOS应用程序的后台录制音频并将其流式传输到服务器的方法。

当应用程序处于前台时,我几乎已经有了这个工作。我使用AVAudioRecorder记录X秒的输入。一旦我得到完成的回调,我再记录X秒。每个记录会话都存储到不同的文件中,我将这些文件异步发送到服务器。

但是,当我的应用进入后台模式时,这似乎不起作用。

当进入后台时,当前记录会话继续记录,直到X秒结束,但是我的应用程序被暂停,然后才开始另一个记录会话。

有什么想法吗?

以下是我的回调代码:

- (void)audioRecorderDidFinishRecording:(AVAudioRecorder *)aRecorder successfully:(BOOL)flag {
    NSLog(@"hello");

    [self initRecorder];

    [recorder recordForDuration:5];

}

2 个答案:

答案 0 :(得分:6)

您无法在后台重新开始录制。

因此,请使用音频队列或音频单元RemoteIO API,这将为您提供较小的“块”(回调缓冲区块)音频,而不会停止录音。

如果您的网络协议需要,请将小型音频回调块连接成更大的文件块。

答案 1 :(得分:1)

多任务处理支持背景音频播放,但背景音频录制效果不是很明显。但是,我还没试过。当应用程序在后台时,Audio Unit API可能允许您继续录制音频。然而,这是一种技巧,我想想它可能会在某个时候被拉出来。