我正在尝试使用我的应用程序中的麦克录制音频,然后将其保存到文档目录
这是我的代码;
//I set up my button and recorder
-(IBAction)recordAudio:(id)sender;{
NSLog(@"recordAudio");
recorder = nil;
if ( isNotRecording){
isNotRecording=NO;
[record setTitle:@"Record Greeting" forState:UIControlStateNormal];
[recorder setDelegate:self];
[recorder prepareToRecord];
[recorder record];
}
else{
isNotRecording = YES;
[record setTitle:@"Stop Recording" forState:UIControlStateNormal];
[recorder stop];
}
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryRecord error:nil];
//I get the path to the Documents Directory
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [documentPaths objectAtIndex:0];
//I name the file with the text that is entered into the textfield
NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[[self imageNameTextField]text]];
// I add extension .m4a to the file so it will be recognized as a audio file
fullPath = [fullPath stringByAppendingFormat:@".m4a"];
//I establish the setting I want the audio to have
NSMutableDictionary *recordSettings = [[NSMutableDictionary alloc] initWithCapacity:10];
if(recordEncoding==ENC_AAC){
[recordSettings setObject:[NSNumber numberWithInt:kAudioFormatMPEG4AAC]forKey:AVFormatIDKey];
[recordSettings setObject:[NSNumber numberWithFloat:44100.0] forKey: AVSampleRateKey];
[recordSettings setObject:[NSNumber numberWithInt:2] forKey:AVNumberOfChannelsKey];
[recordSettings setObject:[NSNumber numberWithInt:6400] forKey:AVEncoderBitRateKey];
[recordSettings setObject:[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey];
[recordSettings setObject:[NSNumber numberWithInt: AVAudioQualityHigh] forKey: AVEncoderAudioQualityKey];
}
//I give the url path
NSURL *url = [NSURL fileURLWithPath:fullPath];
NSError *error = nil;
//I allocate memory for the recording with the setting at the path
recorder = [[ AVAudioRecorder alloc] initWithURL:url settings:recordSettings error:&error];
}
不幸的是,这不起作用。有人可以看一看,看看我哪里出错了吗?
答案 0 :(得分:0)
- (IBAction) startRecording:(id)sender {
if (isRecording) {
isAudioRecord = 1;
recordSetting = [[NSMutableDictionary alloc] init];
[recordSetting setValue :[NSNumber numberWithInt:kAudioFormatLinearPCM] forKey:AVFormatIDKey];
[recordSetting setValue:[NSNumber numberWithFloat:44100.0] forKey:AVSampleRateKey];
[recordSetting setValue:[NSNumber numberWithInt: 2] forKey:AVNumberOfChannelsKey];
[recordSetting setValue :[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey];
[recordSetting setValue :[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsBigEndianKey];
[recordSetting setValue :[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsFloatKey];
recordedFile = [NSURL fileURLWithPath:[[self audioPath] stringByAppendingPathComponent:[NSString stringWithFormat:@"%@",[NSDate date]]]];
self.mediaPath=[NSString stringWithFormat:@"%@",[NSDate date]];
recorder=[[AVAudioRecorder alloc]init];
recorder = [[ AVAudioRecorder alloc] initWithURL:recordedFile settings:recordSetting error:nil];
[recorder setDelegate:self];
[recorder prepareToRecord];
[recorder record];
}
else{
isRecording=YES;
btnPlay.hidden=NO;
currentTimeLabel.text=@"Not Recording";
[recorder stop];
}
// start recording
}