2009-09-25 8 views
4

Y at-il un moyen de convertir un fichier mp3 en wav/aiff dans mon application iPhone? J'ai un mp3 mais je veux le combiner avec d'autres dossiers et la seule manière que je sais que ceci peut être fait est en employant des formats de PCM.iPhone - convertir le mp3 en wav?

Quelqu'un peut-il m'aider ici?

Merci.

Certaines choses que j'essayé

J'ai essayé d'utiliser la méthode AudioConverterFillComplexBuffer() et son rappel pour convertir le mp3 mais la FCV octets par paquet et par image sont lus comme 0. Toute idée comment je peux ou si je peux utiliser cette fonction?

Merci encore.

+1

Vous devriez probablement ajouter la balise core-audio à cette question. – invalidname

+0

peut-être que cela devrait être sur SU? –

Répondre

12

WAV et AIFF souvent (habituellement?) Contiennent PCM, alors quelle est l'objection là-bas? Ou dites-vous que vous devez transmettre vos données MP3 à PCM pour les mixer (peut-être dans une unité audio de mixage multicanal). Si vous voulez sérieusement faire, regardez Core Audio, plus précisément:

  • Services de fichiers audio (pour lire le format MP3 et d'écriture AIFF ou WAV)
  • Services de conversion de fichiers audio (pour convertir les données MP3 à PCM, et/ou pour encoder de PCM à un autre codec si vous deviez écrire un fichier). Notez qu'un convertisseur donné ne peut pas convertir entre deux formats codés; vous pouvez faire MP3-to-PCM ou PCM-to-AAC, mais pour faire MP3-to-AAC, vous auriez besoin de deux convertisseurs.
  • Services de fichiers audio étendus, qui combinent les deux.

Consultez le ConvertFile example dans le Core Audio SDK. Cela ouvre un fichier source pour la lecture, décrit le format souhaité du fichier cible, lit les tampons de l'un et les écrit dans l'autre. Le code présente à la fois l'utilisation séparée des services de fichiers + services de conversion, et l'utilisation pratique de ExtAudioFiles.

De même, assurez-vous de bien comprendre la différence entre les codecs et les formats de fichiers, et les combinaisons de codecs/formats autorisées. J'ai été surpris la première fois que j'ai découvert que PCM doit être petit-boutiste dans un WAV, big-endian dans un AIFF.

+0

On dirait que certains fichiers manquent dans le code. Celui que j'ai téléchargé du lien ci-dessus manque les fichiers dans le groupe "PublicUtility". – lostInTransit

+2

Sur mon système, les fichiers PublicUtility se trouvent dans/Developer/Extras/CoreAudio, et je crois qu'ils sont installés dans le cadre du Core Audio SDK lorsque vous installez les outils Xcode. – invalidname

0

Vous pouvez probablement le faire avec le bon ensemble d'unités Core Audio, mais il utilisera probablement beaucoup de CPU. Vous devriez convertir les données à l'avance (peut-être au moment de la construction?), Si vous le pouvez.