Converter som gravado no iphone de um formato para outro, dizer wav para mp3
Estou tentando gravar algum áudio e convertê-lo para outros formatos de som. Estou usando a classe AVAudioRecorder para gravar e essas são as configurações de gravação que usei.
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];
A gravação está funcionando perfeitamente. Agora eu quero converter este arquivo de som para o formato mp3. Posso fazer isso com a estrutura AudioToolBox. Eu tentei isso
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;
}
A função AudioConverterNew () está me dando um erro kAudioConverterErr_FormatNotSupported ('fmt'). Eu tentei com diferentes combinações mFormatID e mFormatFlag. Mas sempre que um dos operantes (origem ou destino) é mp3, estou recebendo esse erro. Agora, por favor me ajude com estas perguntas.
Podemos usar a estrutura e as funções do AudioToolbox para converter sons, entre os formatos compactado e não compactado (no momento, desejo converter entre .wav e .mp3). Na documentação do AudioConverterNew, eles estão dizendo "A codificação e decodificação entre PCM linear e formatos compactados é suportada". Mas eles não estão dizendo especificamente quais formatos compactados.
Se a resposta à pergunta 1 for 'não', qual estrutura eu preciso usar para converter o som entre os formatos mencionados acima?
Não relacionado ao item 2 acima, mas alguém pode me fornecer um link para qualquer site em que informações sobre diferentes formatos de som (wav, mp3, aac etc.) e suas representações digitais (cpm, lpcm etc.), para que eu possa entender quem usa o quê.