3

是否可以使用 AVAudioRecorder 录制音频并同时使用 AVAudioPlayer 播放另一个音频文件?

4

1 回答 1

0

iOS 6 是可能的。我自己在 iOS 5.x 中这样做时遇到了问题。没有关于 5.x 之前版本的信息。

为此,必须将 AudioSession-category 设置为AVAudioSessionCategoryPlayAndRecord

NSError *error = nil;
NSLog(@"Setting category for AudioSession to AVAudioSessionCategoryPlayAndRecord");
BOOL success = [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:&error];
if (!success) {
    NSLog(@"Error setting category for AudioSession:\n\terror: %@", error.localizedDescription);
}

AVAudioRecorder 的设置如下:

NSString *fileToRecordPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"record.m4a"];
NSURL *fileToRecordURL = [NSURL fileURLWithPath:fileToRecordPath];
NSDictionary *settings = @{AVFormatIDKey: [NSNumber numberWithInt:kAudioFormatMPEG4AAC],
                           AVSampleRateKey: [NSNumber numberWithFloat:44100.0],
                           AVNumberOfChannelsKey: [NSNumber numberWithInt:1]};
NSError *error = nil;

AVAudioRecorder *audioRecorder = [[AVAudioRecorder alloc] initWithURL:self.fileURL settings:settings error:&error];
 if (!audioRecorder) {
    NSLog(@"Error initializing AVAudioRecorder:\n\terror: %@", error.localizedDescription);
}
audioRecorder.delegate = self;
[audioRecorder prepareToRecord];

在 AVAudioPlayer 中播放另一个音频文件(相同格式,m4a)时,在 iOS 6 中一切正常。在 iOS 5 中,行为很奇怪。播放音频或音频播放暂停时,无法开始录音。当首先开始录制时,可以同时播放(另一个文件)。

经过一番搜索后,我找不到正确设置它的方法。虽然我不敢相信,这是 iOS 中的一个错误,但缺少设置。

所以这适用于 iOS 6,但非常感谢对 iOS 5 问题的帮助;o)

于 2013-06-27T11:50:56.653 回答