0

我使用以下代码录制音频。它适用于.caf格式。

dirPaths = NSSearchPathForDirectoriesInDomains(
                                               NSDocumentDirectory, NSUserDomainMask, YES);
docsDir = [dirPaths objectAtIndex:0];
NSString *soundFilePath = [docsDir
                           stringByAppendingPathComponent:@"sound.caf"];

NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath];

NSDictionary *recordSettings = [NSDictionary
                                dictionaryWithObjectsAndKeys:
                                [NSNumber numberWithInt:AVAudioQualityMin],
                                AVEncoderAudioQualityKey,
                                [NSNumber numberWithInt:16],
                                AVEncoderBitRateKey,
                                [NSNumber numberWithInt: 2],
                                AVNumberOfChannelsKey,
                                [NSNumber numberWithFloat:44100.0],
                                AVSampleRateKey,
                                nil];

NSError *error = nil;

audioRecorder = [[AVAudioRecorder alloc]
                 initWithURL:soundFileURL
                 settings:recordSettings
                 error:&error];

但是对于 .amr,如果我按照下面的方式将扩展名更改为 .amr,那么我无法录制音频。

NSString *soundFilePath = [docsDir
                       stringByAppendingPathComponent:@"sound.amr"];

任何人都可以指导我如何以 .amr 格式录制和保存音频吗?

4

1 回答 1

1

试试下面的代码,可能对你有用..

AppDelegate *del = (AppDelegate*)[[UIApplication sharedApplication]delegate];
//set path & name for Recording Audio
                NSString *dataPath=[del.path_Folder_Document copy];
                NSString *filePath = [NSString stringWithFormat:@"%@/Images_Audio/%@.3gp", dataPath,[ARR_Img_File_Name_Moment objectAtIndex:pos]];
                NSLog(@"Audio File Path =%@",filePath);

                NSURL *tmpFileUrl = [NSURL fileURLWithPath:filePath];
//set Record Setting 
                NSDictionary *recordSettings = [NSDictionary dictionaryWithObjectsAndKeys:
                                                [NSNumber numberWithInt: kAudioFormatMPEG4AAC], AVFormatIDKey,
                                                [NSNumber numberWithFloat:8000.0], AVSampleRateKey,
                                                [NSNumber numberWithInt: 1], AVNumberOfChannelsKey,
                                                nil];

                NSError *error = nil;
//Prepare Recorder to Start Recording Audio
                recorder = [[AVAudioRecorder alloc] initWithURL:tmpFileUrl settings:recordSettings error:&error];
                recorder.delegate = self;
                [recorder prepareToRecord];

                AVAudioSession *session = [AVAudioSession sharedInstance];
                [session setCategory:AVAudioSessionCategoryRecord error:nil];
                [session setActive:YES error:nil];
//Start Recording Audio ..

                if ([[NSFileManager defaultManager] isWritableFileAtPath:filePath]) {
                    NSLog(@"Writable Pathforimage_Audio 1st>> %@", filePath);

                }else
                {
                    NSLog(@"Not Writable");
                }

                [recorder record];

                NSLog(@"its recording audio...");
于 2015-02-23T06:27:41.730 回答