2012-03-07 74 views
0

我試圖記錄與麥克風聲音在我的應用程序,然後將其保存到文件目錄記錄音頻瓦特/邁克保存到文檔目錄

這裏是我的代碼;

//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
- (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; 
     [email protected]"Not Recording"; 
     [recorder stop]; 
    } 
    // start recording 
}