录制前iPhone SDK AVAudioRecorder延迟

sla*_*ton 6 iphone audio delay avaudiorecorder ios

我正在使用AVAudioRecorder从麦克风中获取音频.我面临的问题是:第一次开始录制时,我告诉录音机开始和实际开始之间有2秒的延迟.后续录制呼叫执行得更快.这里有明显的错误吗?我该怎么做才能加快开始初始录制所需的时间.

我在viewDidLoad中初始化了录像机:

- (void)viewDidLoad
{
    NSString *fileName = @"test.aiff";
    [super viewDidLoad];

    NSString *docsDir = [NSSearchPathForDirectoriesInDomains(
                    NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

    NSString *soundFile = [docsDir
                               stringByAppendingPathComponent:fileName];

    NSURL *soundFileURL = [NSURL fileURLWithPath:soundFile];

    NSDictionary *recordSettings = [NSDictionary 
                                    dictionaryWithObjectsAndKeys:
                                    [NSNumber numberWithInt:AVAudioQualityMin],
                                    AVEncoderAudioQualityKey,
                                    [NSNumber numberWithInt:16], 
                                    AVEncoderBitRateKey,
                                    [NSNumber numberWithInt: 2], 
                                    AVNumberOfChannelsKey,
                                    [NSNumber numberWithFloat:44100.0], 
                                    AVSampleRateKey,
                                    nil];

    NSError *error = nil;

    audioRecorder = [[AVAudioRecorder alloc]
                     initWithURL:soundFileURL
                     settings:recordSettings
                     error:&error];
}
Run Code Online (Sandbox Code Playgroud)

然后当我准备好时,我通过调用我的startRecoring方法启动录音机:

-(void) startRecording{
    NSLog(@"Trying to start Recording");
    [audioRecorder record];
    NSLog(@"Recording started");
} 
Run Code Online (Sandbox Code Playgroud)

这是日志输出,您可以看到两个NSLog调用之间大约有2.5秒.第一次点击但不是其他时间:

First recorder call    
2011-04-13 15:41:47.495 AudioRecorderTest[6570:207] Trying to start Recording
2011-04-13 15:41:49.869 AudioRecorderTest[6570:207] Recording started

Next Recorder Call
2011-04-13 15:42:49.236 AudioRecorderTest[6570:207] Trying to start Recording
2011-04-13 15:42:49.246 AudioRecorderTest[6570:207] Recording started
Run Code Online (Sandbox Code Playgroud)

Zak*_*man 5

在 initWithURL:settings:error: 方法中的 url 参数指定的位置创建音频文件。如果该位置已存在文件,则此方法将覆盖它。

当您调用 record 时,此方法调用的准备工作会自动进行。当您希望在调用录音时尽快开始录音时,请使用prepareToRecord。

初始化录音机后尝试调用prepareToRecord