アプリのオーディオ録音機能に取り組んでいます。私はこのコードを使用しています:
-(void)startAudioRecorder:(NSError**)error{
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
NSError *err = nil;
[audioSession setCategory :AVAudioSessionCategoryPlayAndRecord error:&err];
if(err){
NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]);
return;
}
[audioSession setActive:YES error:&err];
NSMutableDictionary* recordSetting = [[NSMutableDictionary alloc] init] ;
[recordSetting setValue :[NSNumber numberWithInt:kAudioFormatMPEG4AAC] forKey:AVFormatIDKey];//kAudioFormatAppleIMA4,kAudioFormatAAC
[recordSetting setValue:[NSNumber numberWithFloat:44100.0] forKey:AVSampleRateKey];
[recordSetting setValue:[NSNumber numberWithInt: 1] forKey:AVNumberOfChannelsKey];
NSString *absolutePath=[self getAbsoluteAudioFilePath];
if([[NSFileManager defaultManager] fileExistsAtPath:absolutePath]){
// [[NSFileManager defaultManager ] removeItemAtPath:absolutePath error:nil];
}
NSError *audioRecorderError=nil;
NSURL *absoluteUrl=[NSURL fileURLWithPath:absolutePath];
self.audioRecorder=[[[AVAudioRecorder alloc] initWithURL:absoluteUrl settings:recordSetting error:&audioRecorderError] autorelease];
NSLog(@"%s audioRecorder created=%@",__func__,self.audioRecorder);
[self.audioRecorder setDelegate: self];
BOOL prepared=[self.audioRecorder prepareToRecord];
BOOL record=[self.audioRecorder record];
if(!prepared || !record){
UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"message" message:@"something wrong" delegate:nil cancelButtonTitle:@"ok" otherButtonTitles: nil];
[alert show];
[alert release];
}
*error=audioRecorderError;
//[recordSetting release];
//recordSetting=nil;
}
上記の記録用コードを見つけたさまざまなブログから、すべての iOS デバイスで期待どおりに動作し、iPad、iPod、および iPhone でテストしました。残念ながら、 iPhone 4、iOS 5.1.1デバイスの残りのすべての組み合わせで音声が非常に少ない上記のコード録音は良好です。音声メモで自分の声を開いて録音しました。うまくいっています。
私の問題を解決する変更はありますか? 高品質で音声を録音するには、どのような方法が最適でしょうか?