2011-04-13 6 views
0

Je souhaite décompresser un fichier son compressé dans mon application iPhone/iPad. Dans mon application, j'ai des fichiers .m4a que je voulais convertir en format .wav. Comment est-ce possible grâce au code?Comment convertir un fichier son compressé en fichier non compressé

+0

Voulez-vous dire convertir le _format_? Une fois que quelque chose a été compressé, vous ne pouvez pas augmenter la qualité/résolution du son échantillonné. – Widor

+0

Oui, en fait, je veux connaître la forme d'onde du fichier compressé – iPhoneDev

Répondre

0

Vous pouvez utiliser ExtAudioFile pour ce faire:

CFURLRef url = /* ... */; 
ExtAudioFileRef eaf; 
OSStatus err = ExtAudioFileOpenURL((CFURLRef)url, &eaf); 
if(noErr != err) 
    /* handle error */ 

AudioStreamBasicDescription format; 
format.mSampleRate = 44100; 
format.mFormatID = kAudioFormatLinearPCM; 
format.mFormatFlags = kAudioFormatFormatFlagIsPacked; 
format.mBitsPerChannel = 16; 
format.mChannelsPerFrame = 2; 
format.mBytesPerFrame = format.mChannelsPerFrame * 2; 
format.mFramesPerPacket = 1; 
format.mBytesPerPacket = format.mFramesPerPacket * format.mBytesPerFrame; 

err = ExtAudioFileSetProperty(eaf, kExtAudioFileProperty_ClientDataFormat, sizeof(format), &format); 

/* Read the file contents */ 

Il est évident que je viens arbitrairement choisi stéréo entier de 16 bits comme format pour récupérer, mais nous espérons que l'idée est claire. Vous dites simplement à ExtAudioFile quel format vous souhaitez utiliser pour vos données audio, et il convertit automatiquement le format du fichier au format requis (client).

Apple a plus étendu exemple de code à http://developer.apple.com/library/mac/#samplecode/ConvertFile/Introduction/Intro.html

+0

Lorsque j'essaie votre code exact ci-dessus (après avoir réparé le bégaiement dans les drapeaux de format), je reçois un "fmt?" Erreur. Une idée de ce que le problème pourrait être? –

Questions connexes