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 audio
。 no codec available for .mp3 recording
。 您需要以aac
或wav
格式录制并将其转换为.mp3
格式。
更好地检查下面的链接和图像:
录音参考
这里是学习转换audio格式的基础知识的链接:
audio转换器参考