запись звука в приложении iphone с микрофоном для сохранения в каталоге документов - PullRequest
0 голосов
/ 08 марта 2012

Я пытаюсь записать звук с микрофоном в моем приложении, а затем сохранить его в каталоге документов

Вот мой код;

//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];
       }

К сожалению, это не работает. Может ли кто-нибудь просмотреть это и увидеть, где я ошибся?

1 Ответ

0 голосов
/ 04 июня 2014
- (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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...