2012-05-11 14 views
6

Ses dosyalarını .wav biçiminde kaydeden bir iPhone uygulaması geliştiriyorum.iPhone Uygulaması: mp3'de ses kaydı

burada kod Üstü

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 formatında ses kaydettiğini kodu olduğunu. MP3'de ses kaydetmek istiyorsanız, kAudioFormatLinearPCM (.wav) yerine kAudioFormatMPEGLayer3 (mp3) tuşunu kullanarak başka hangi değişikliklere ihtiyacım var? örnekleme oranı, kanal ve tüm

veya daha küçük, iPhone ve Android ile uyumlu olan ve Yardım ve öner Lütfen iPhone Uygulaması

doğrudan

kaydedilebilir herhangi bir ses formatını öner gibi sözlüğünü recordSetting değişiklikler.

Teşekkürler.

cevap

23
: o ses biçimini dönüştürmek için temel öğrenmek için bir link İşte

Audio Recording Reference

enter image description here

MP3’e kayıt yapamazsınız, kodlama söz konusu olduğunda tescilli bir formattır ing. Eğer FFMPEG kullanabileceğiniz bir sunucuya bu ses gönderiyorsanız

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

Ayrıca yapıyor dönüşüm, bir işlemci yoğun bir işlemdir: Bu da kayıt süresi 2 dakika boyunca ~ 150 KB çıkıyor, kullandığım ayarlardır sunucuda ses dönüştürme yapmak için mp3lame kütüphanesi ile.

DÜZENLEME: Bu, Android kayıt kodu, AAC sadece Honeycomb olarak desteklendiği için AMR kodlamasına ayarlanmıştır.

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"); 
+0

Yardımlarınız için teşekkürler, ancak .A4 dosyası .m4a'dan nasıl alabilirim. Android'de desteklenmez. Lütfen bana bildirin. – ios

+1

Android geliştirici iş ortağım bana bu http://developer.android.com/guide/appendix/media-formats.html adresini verdi. Burada Android'de AAC'de kodlayabileceğinizi ve bir .m4a dosyasını kaydedebildiğinizi görebilmek için bir .m4a dosyasını kaydedebilirsiniz. iOS ve Android için aynı .m4a formatı problemsiz. – 8vius

+0

Sorununuzu çözmek için yönetilen, dostum? – 8vius

1

.mp3 dosyasında ses kaydedemiyorsunuz. kAudioFormatMPEGLayer3 yalnızca playback the .mp3 format audio içindir. no codec available for .mp3 recording var. aac veya wav biçiminde kayda gereksinim duyarsınız ve .mp3 biçimine dönüştürmeniz gerekir. Daha

aşağıdaki bağlantıyı ve görüntüleri göz atın:

Audio Converter Reference

İlgili konular