Lecture de fichiers MP3
Je veux lire des fichiers MP3 en C++ et je préfère écrire mon propre code pour cela. Fondamentalement, pour savoir comment le type de travaux. Je veux lire tous les bits de données hexadécimales d'un fichier MP3 et mes haut-parleurs jouer. 🙂 Je n'ai aucune idée par où commencer car je ne sais pas encore comment les données sont stockées dans un fichier MP3.
Merci pour votre aide
source d'informationauteur Midas
Vous devez vous connecter pour publier un commentaire.
Commencer par lire sur le structure d'un fichier mp3. Alors, si vous êtes toujours intéressé, trouver un bon tutoriel sur comment décoder les données audio dans chaque image. C'est assez complexe, donc vous aurez besoin d'avoir juste un peu de temps pour le faire à partir de zéro.
Vous pouvez acheter les spécifications pour le format MP3 de ici. C'est à propos de 160EUR.
Oh, et par la manière, ce n'est pas "hex de données". Si vous êtes encore au point où vous vous référez à tous les non-humains de données lisibles "hexadécimal" (qui est un système de numération), plonger la tête la première dans un format de données binaire qui implique complexe de décodage/encodage des algorithmes peut-être un peu trop pour vous pour le moment.
Comment au sujet de commencer par l'écriture d'un joueur qui peut jouer .les fichiers wav? (Dans la mesure du raisonnable .fichier wav, vous l'esprit, en prenant en compte le format de fichier et les différents formats audio)
J'ai fait un peu de recherche, il se peut que vous aider.
Structure du fichier
Un fichier MP3 est constitué de plusieurs MP3 des cadres, qui sont constitués d'un en-tête et d'un bloc de données. Cette séquence d'images est appelé un flux élémentaire. Les Frames ne sont pas des éléments indépendants ("byte réservoir") et, par conséquent, ne peuvent pas être extraites sur l'arbitraire des limites du cadre. Les MP3, les blocs de Données contiennent de l'audio (compressés) de l'information en termes de fréquences et d'amplitudes. Le diagramme montre que les MP3 en-Tête se compose d'un mot de synchronisation, qui est utilisé pour identifier le début d'un titre de cadre. Il est suivi par un bit indiquant que c'est la norme MPEG et deux bits qui indiquent que la couche 3 est utilisé; par conséquent, MPEG-1 Audio Layer 3 ou MP3. Après cela, les valeurs seront différentes selon que le fichier MP3. La norme ISO/IEC 11172-3 définit la plage de valeurs pour chaque section de l'en-tête avec la spécification de l'en-tête. La plupart des fichiers MP3 d'aujourd'hui contiennent des métadonnées ID3, qui précède ou suit le MP3 images, comme indiqué dans le diagramme.
Le code Source de la LAME
BOITEUX est un MP3 de la bibliothèque, mais c'est aussi open-source, ce qui signifie que vous pouvez télécharger le code source et le regarder.
http://sourceforge.net/projects/lame/files/lame/3.98.4/lame-3.98.4.tar.gz/download
J'ai pris un coup d'oeil à moi-même, et il semble être écrit en C ou C++, vous avez de la chance.
Si vous examinez le code source de la LAME, et de comprendre comment cela fonctionne, peut-être que vous pouvez réussir à faire un MP3 de la bibliothèque de votre propre. Il suffit de noter que la LAME n'est pas une bibliothèque pour playhing fichiers MP3, mais pour l'encodage. Mais comme il crée MP3 au lieu de les lire, je pense que la structure devrait être un peu plus clair avec tout autre lecteur MP3 de la bibliothèque.
Explication de format de fichier MP3
Cela semble également expliquer comment MP3 fonctionne assez bien, mais c'est de la pure théorie, de sorte que vous aurez besoin de beaucoup de patience.
http://www.mp3-converter.com/mp3codec/
Bien, il serait difficile 🙂
De toute façon, votre demande doit être composé de deux parties - de décompression de la bibliothèque /routines et votre principal backendce qui pourrait prendre quelques décompressé le bloc de données et en fait jouer.
Je recommanderais "Compression de Données" livre par David Salomon comprendre le fonctionnement de votre décodeur doit effectivement faire. Les variantes pour votre deuxième parties sont, malheureusement, trop large pour couvrir en une seule phrase.
Vous pourriez également essayer d'enquêter sur certains open-source
mp3
décodeurs /décodage libs comme celui-ci.Si vous insistez pour le faire vous-même, vous devez commencer avec les spec:
http://mpgedit.org/mpgedit/mpeg_format/MP3Format.html
Vous aurez envie d'utiliser certains décodeur bibliothèque pour votre tâche, quelque chose comme http://sourceforge.net/projects/mpg123net/
Il est également passionné de décodeur... http://www.underbit.com/products/mad/
À lire correctement un fichier mp3, il y a beaucoup de mathématiques impliqués, et je suppose que vous ne voulez vraiment pas à aller dans...