我正在使用 AVAudioRecorder 录制具有以下配置的不同长度的音频文件:
- (AVAudioRecorder*)recorder
{
if(!_recorder) {
// Set the audio file
NSArray *pathComponents = [NSArray arrayWithObjects:[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject], @"ExamTranscript.m4a", nil];
self.soundFileURL = [NSURL fileURLWithPathComponents:pathComponents];
// Define the recorder setting
NSMutableDictionary *recordSetting = [[NSMutableDictionary alloc] init];
[recordSetting setValue:[NSNumber numberWithInt:kAudioFormatMPEG4AAC] forKey:AVFormatIDKey];
[recordSetting setValue:[NSNumber numberWithFloat:16000.0] forKey:AVSampleRateKey];
[recordSetting setValue:[NSNumber numberWithInt: 1] forKey:AVNumberOfChannelsKey];
// Initiate and prepare the recorder
_recorder = [[AVAudioRecorder alloc] initWithURL:self.soundFileURL settings:recordSetting error:NULL];
_recorder.meteringEnabled = YES;
_recorder.delegate = self;
}
return _recorder;
}
当我打电话[self.recorder stop]
时,录音的最后 2-3 秒永远不会被捕获(而且它们肯定是需要的。)
例如,如果我在打电话self.recorder.currentTime
之前打电话[self.recorder stop]
,我会得到一个比生成文件的实际持续时间大 2-3 秒的 NSTimeInterval。在那 2-3 秒内记录的任何内容都会丢失。
调用后,[self.recorder stop]
我调用了适当的audioRecorderDidFinishRecording:successfully:
委托方法,并且标志表明它是成功的。
我完全不知道这些最后几秒钟是如何丢失的。(录音机没有发布,仍然有强烈的参考。)
更新
该应用程序会多次提示用户说话,因此 AVAudioRecorder 会多次暂停和恢复,然后在最终响应结束时停止。它被暂停而不是停止,因为它都需要录制到单个音频文件中。