2010-09-21 22 views
5

Sto provando a registrare un po 'di audio e convertirli in altri formati audio. Sto usando classe AVAudioRecorder per registrare e queste sono le impostazioni di registrazione che ho usato ..Converti Suono registrato in iphone da un formato a un altro dire wav to mp3

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

registrazione sta lavorando splendidamente. Ora voglio convertire questo file audio in formato mp3. Posso farlo con il framework AudioToolBox. Ho provato questo

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

La funzione AudioConverterNew() mi sta dando errore kAudioConverterErr_FormatNotSupported ('fmt'). Ho provato con diverse combinazioni mFormatID e mFormatFlag. Ma ogni volta che uno degli operanti (fonte o destinazione) è mp3, sto ricevendo questo errore. Ora, per favore aiutami con queste domande.

  1. possiamo usare AudioToolbox quadro e funzioni per convertire i suoni tra formato compresso compressa e non (attualmente voglio per la conversione tra .wav e .mp3). Nella documentazione di AudioConverterNew si dice " " Codifica e decodifica tra PCM lineare e formati compressi è supportato ". Ma non sono nello specifico che comprendeva i formati compressi.

  2. Se la risposta alla domanda 1 è 'no' poi che quadro devo uso di convertire il suono tra sopra formati citati?

  3. Non
  4. legato al di sopra del 2, ma può qualcuno darmi un link per eventuali siti web dove informazioni sui formati audio differenti (wav, mp3, aac ecc) e le loro digitali rappresentazioni (cpm, LPCM, ecc) in modo che posso capire quale usa cosa.

risposta

1

Alcune risposte

  1. Sì, è possibile utilizzare il framework AudioToolbox per convertire i suoni eccetto nel caso del formato .mp3. A causa di problemi di copyright, mp3 non è disponibile come formato di destinazione all'interno del framework.

  2. Se si desidera convertire in mp3, è probabile che tu debba utilizzare le librerie di LAME: http://lame.cvs.sourceforge.net/viewvc/lame/lame/USAGE

  3. Ecco uno per la specifica .mp3: http://mpgedit.org/mpgedit/mpeg_format/MP3Format.html Gli altri formati si possono trovare abbastanza facilmente via web Ricerca

Speranza che aiuta