我正在尝试使用iPhone麦克风录制声音并在扬声器上播放声音(如果插入耳机则播放耳机)。
目前我使用此设置和音频播放功能......虽然它不会在手机的底部(响亮)扬声器上播放,而是在前置摄像头附近的耳机上播放:
NSString *tempDir = NSTemporaryDirectory();
NSString *soundFilePath = [tempDir stringByAppendingPathComponent:@"sound.caf"];
NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath];
NSDictionary *recordSettings = @{AVEncoderAudioQualityKey: [NSNumber numberWithInt:AVAudioQualityMin],
AVEncoderBitRateKey: @16,
AVNumberOfChannelsKey: @2,
AVSampleRateKey: @44100.0};
NSError *error = nil;
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
_audioRecorder = [[AVAudioRecorder alloc] initWithURL:soundFileURL settings:recordSettings error:&error];
我尝试过这样的事情:(更改了文件扩展名并将AVFormatIDKey添加到设置中)
NSString *soundFilePath = [tempDir stringByAppendingPathComponent:@"sound.aac"];
NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath];
// Set settings for audio recording
NSDictionary *recordSettings = @{AVFormatIDKey: [NSNumber numberWithInt:kAudioFormatMPEG4AAC],
AVEncoderAudioQualityKey: [NSNumber numberWithInt:AVAudioQualityMin],
AVEncoderBitRateKey: @16,
AVNumberOfChannelsKey: @2,
AVSampleRateKey: @44100.0};
但后来我得到了:
Error: The operation couldn’t be completed. (OSStatus error 2003334207.)
如果我将文件扩展名更改为.caf,则不报告错误,但不会播放任何内容。
这是播放代码:
NSError *error;
_audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:_audioRecorder.url error:&error];
_audioPlayer.delegate = self;
if (error) NSLog(@"Error: %@", [error localizedDescription]);
else [_audioPlayer play];
简而言之,如何使用iPhone扬声器(或插入耳机时)录制和播放aac文件?
------------------编辑-----------------
使用此设置将其保存到.aac文件:
NSDictionary *recordSettings = @{AVFormatIDKey: @(kAudioFormatMPEG4AAC),
AVEncoderAudioQualityKey: @(AVAudioQualityMin),
AVSampleRateKey: @16000.0,
AVNumberOfChannelsKey: @1};
现在我只需要在扬声器上播放,这样用户就可以实际听到录制的内容