iPhone应用程序:在MP3中录制audio

我正在开发一个iPhone应用程序,它以.wav格式loggingaudio。

这里是代码

NSMutableDictionary* recordSetting = [[NSMutableDictionary alloc]init]; [recordSetting setValue :[NSNumber numberWithInt:kAudioFormatLinearPCM] forKey:AVFormatIDKey]; [recordSetting setValue:[NSNumber numberWithFloat:11025.0] forKey:AVSampleRateKey]; [recordSetting setValue:[NSNumber numberWithInt: 1] forKey:AVNumberOfChannelsKey]; [recordSetting setValue:[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey]; NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [path objectAtIndex:0]; NSString *myDBnew = [documentsDirectory stringByAppendingPathComponent:@"test.wav"]; recordedTmpFile = [NSURL fileURLWithPath:myDBnew]; NSLog(@"Using File called: %@",recordedTmpFile); recorder = [[ AVAudioRecorder alloc] initWithURL:recordedTmpFile settings:recordSetting error:&error]; [recorder setDelegate:self]; [recorder prepareToRecord]; [recorder record]; 

以上代码以.wav格式录制audio。 如果我想使用关键kAudioFormatMPEGLayer3(mp3)而不是kAudioFormatLinearPCM(.wav)来loggingMP3audio,我还需要做什么其他更改? logging设置字典中的采样率,通道和全部变化

或build议任何兼容iPhone和Android的audio格式,体积较小,可直接从iPhone应用程序录制

请帮助和build议。

谢谢。

您不能在MP3中进行录制,这是编码时的专有格式。 这些是我使用的设置,在2分钟的logging时间内出现约150KB:

 NSString *tempDir = NSTemporaryDirectory(); NSString *soundFilePath = [tempDir stringByAppendingPathComponent:@"sound.m4a"]; NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath]; NSDictionary *recordSettings = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt:kAudioFormatMPEG4AAC], AVFormatIDKey, [NSNumber numberWithInt:AVAudioQualityMin], AVEncoderAudioQualityKey, [NSNumber numberWithInt:16], AVEncoderBitRateKey, [NSNumber numberWithInt: 1], AVNumberOfChannelsKey, [NSNumber numberWithFloat:8000.0], AVSampleRateKey, [NSNumber numberWithInt:8], AVLinearPCMBitDepthKey, nil]; 

另外做转换是一个处理器激烈的操作,如果你发送这个audio到一个服务器,你可以使用mp3lame库的FFMPEG在服务器上进行audio转换。

编辑:这是Android录音的代码,它被设置为AMR编码,因为AAC仅支持Honeycomb。

 mediaRecorder = new MediaRecorder(); mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); mediaRecorder.setAudioChannels(1); mediaRecorder.setOutputFile("sample.m4a"); 

您不能在.mp3文件中录制audio。 kAudioFormatMPEGLayer3仅用于playback the .mp3 format audiono codec available for .mp3 recording 。 您需要以aacwav格式录制并将其转换为.mp3格式。

更好地检查下面的链接和图像:

录音参考

在这里输入图像说明

这里是学习转换audio格式的基础知识的链接:

audio转换器参考