2010-09-21 16 views
5

Bazı sesleri kaydetmeye ve diğer ses formatlarına dönüştürmeye çalışıyorum.Kaydedilen sesi bir formattan diğerine dönüştürün mp3'e çevir

NSDictionary *recordSetting = [[NSMutableDictionary alloc] init]; 
[recordSetting setValue:[NSNumber numberWithInt:kAudioFormatLinearPCM] forKey:AVFormatIDKey];//kAudioFormatMicrosoftGSM,kAudioFormatLinearPCM 
[recordSetting setValue:[NSNumber numberWithFloat:8000] forKey:AVSampleRateKey]; 
[recordSetting setValue:[NSNumber numberWithInt: 2] forKey:AVNumberOfChannelsKey]; 
[recordSetting setValue :[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey]; 
[recordSetting setValue :[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsBigEndianKey]; 
[recordSetting setValue :[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsFloatKey]; 

Kayıt güzelce çalışıyor .. ben kaydetmek için AVAudioRecorder sınıfını kullanıyorum ve bu kullandığım kayıt ayarları vardır. Şimdi bu ses dosyasını mp3 formatına çevirmek istiyorum. Bunu AudioToolBox çerçevesiyle yapabilir miyim? Bu

AudioStreamBasicDescription sourceFormat,destinationFormat; 
//Setting up source Format setting..here wav 
sourceFormat.mSampleRate = 8000.0; 
sourceFormat.mFormatID = kAudioFormatLinearPCM; 
sourceFormat.mFormatFlags = kAudioFormatFlagIsSignedInteger ; 
sourceFormat.mBytesPerPacket = 4; 
sourceFormat.mFramesPerPacket = 1; 
sourceFormat.mBytesPerFrame = 4; 
sourceFormat.mChannelsPerFrame = 2; 
sourceFormat.mBitsPerChannel = 16; 

destinationFormat.mSampleRate = 8000.0; 
destinationFormat.mFormatID = kAudioFormatMPEGLayer3; 
destinationFormat.mFormatFlags = 0; 
destinationFormat.mBytesPerPacket = 4; 
destinationFormat.mFramesPerPacket = 1; 
destinationFormat.mBytesPerFrame = 4; 
destinationFormat.mChannelsPerFrame = 2; 
destinationFormat.mBitsPerChannel = 16; 

OSStatus returnCode  =  AudioConverterNew(&sourceFormat,&destinationFormat,&converter); 
if (returnCode) { 
    NSLog(@"error getting converter : %d",returnCode); 
    return; 
} 

fonksiyon AudioConverterNew() beni kAudioConverterErr_FormatNotSupported ('Fmt') hata veriyor çalıştı. Farklı mFormatID ve mFormatFlag kombinasyonları ile denedim. Ama ne zaman operant (kaynak veya hedef) biri mp3 ise bu hatayı alıyorum. Şimdi lütfen bu sorulara bana yardımcı olun.

  1. biz (ben Wav ve .mp3 arasında dönüştürmek istediğiniz Günümüzde) sıkıştırılmış olan ve olmayan sıkıştırılmış formatta arasındaki sesleri dönüştürmek için AudioToolbox çerçevesini ve fonksiyonlarını kullanabilir. AudioConverterNew belgelerinde " doğrusal PCM arasında kodlama ve kod çözme ve sıkıştırılmış biçimler desteklenmektedir" diyorlar. Ancak, özellikle hangi sıkıştırılmış biçemlerinin olduğunu söylemiyorlar.

  2. cevap soru 1'e Eğer bir 'hayır' sonra bahsettiğim formatlar üzerinde arasındaki ses dönüştürmek için kullanıma gerekiyor hangi çerçeve?

  3. Değil 2 üzeri, ilgili ancak herkes bana herhangi web sitelerine link verebilir nerede bilgiler yaklaşık farklı ses formatları (WAV, MP3, AAC vs) ve bunların dijital gösterimleri (cpm, LPCM vs) bu yüzden hangi hangi kullanır anlayabiliyorum.

cevap

1

Bazı yanıtlar

  1. Evet, .mp3 formatında durumunda dışında sesleri dönüştürmek için AudioToolbox çerçevesini kullanabilirsiniz. Telif hakkı sorunları nedeniyle mp3, çerçevede bir hedef biçim olarak mevcut değildir. web üzerinden oldukça kolay bulabileceğiniz http://mpgedit.org/mpgedit/mpeg_format/MP3Format.html diğer formatlar: http://lame.cvs.sourceforge.net/viewvc/lame/lame/USAGE

  2. İşte .mp3 spec için bir tane: Eğer mp3 dönüştürmek istiyorsanız

  3. , büyük olasılıkla LAME kütüphaneleri kullanmak gerekir

    yardımcı arama

Umut