7
votes

Le moyen le plus simple de jouer mp3 de Visual C ++

Depuis quelques années de retour, j'ai écrit une bibliothèque Util autour de Dshow / Dsound pour me permettre de jouer des mp3 dans une application Windows C ++. Est-ce que c'est toujours la façon normale de le faire dans une application C ++ / MFC, ou est-ce une zone de DirectX qui a été déposée dans les API de Windows générales?

La motivation est simplement que nous utilisons simplement la méthode Standard Windows PlaySound pour WAVS et souhaiterions pouvoir lire des MP3 à l'aide d'une API simple similaire, fournie par Windows ou quelque chose que nous écrivons pour envelopper une fonctionnalité plus complexe.

Edit: Ceci est pour un grand projet commercial, commercial et fermé. Et nous voulons seulement jouer des choses simplement, payer beaucoup pour une bibliothèque ne volera pas.


0 commentaires

6 Réponses :


-1
votes

Vous pourriez avoir un coup d'œil à Bass . C'est une bibliothèque audio simple à utiliser gratuitement pour une utilisation non commerciale.


0 commentaires

7
votes

Vous pouvez soit utiliser DirectShow, mais il ne fait plus partie de DirectX plus ou ne s'appuie plus sur une bibliothèque tierce comme Bass , FMOD , MPG123 ou même libwmp3 .

Si vous ne voulez plus utiliser DirectShow (mais pourquoi changer si votre code existant continue de fonctionner?), Vous pouvez utiliser MCI : P>

mciSendString("open la_chenille.mp3 type mpegvideo alias song1", NULL, 0, 0); 
mciSendString("play song1", NULL, 0, 0);
mciSendString("close song1", NULL, 0, 0);


1 commentaires

Quelques potentiels gotcharas avec cet extrait: 1. Assurez-vous que le chemin de votre fichier est correctement cité \ " \" 2. J'ai trouvé que l'envoi "Fermer Song1" immédiatement après "Jouer Song1" avait l'effet du son ne joue pas. C'est-à-dire que le son serait ouvert, puis immédiatement fermé.



0
votes

Si vous ne voulez pas payer de licence et que vous voulez faire en interne, effectuez l'analyse de votre fichier MP3 et transmettez-la à XAudio2. C'est une chose que vous pouvez faire une fois (2-3 heures à max) et utiliser toujours. : P


2 commentaires

Comment ça va mieux que Demandshow? Les deux sont des API MS, mais les utilisateurs auront déjà dshow (probablement). Y a-t-il un avantage?


DirectShow a une autre cible, est destiné au "multimédia" comme pour le multimédia, le sens est très large. (Et est de toute façon disponible maintenant non mis à jour) XAudio2 est le remplacement de DirectSound, est une plate-forme inter-plate-forme inter-plate-forme d'API audio de bas niveau Xbox360 / PC. Microsoft veut la pousser comme la seule API à être usée sous Windows.



3
votes

Ceci est un moyen facile de lire n'importe quel fichier audio: http://msdn.microsoft.com/en-us/library/dd390090 (vs.85) .aspx


0 commentaires

2
votes

YOUC pourrait utiliser des fonctions Windows MCI, https://msdn.microsoft.com/en-us/library/ms7096266

Il peut jouer à de nombreux formats de fichiers audio, y compris MP3, WAV, MIDI, etc.

Si je me rappelle correctement, cela ne nécessite pas DirectX.

La fonction PlaySound pourrait également fonctionner pour vous.


0 commentaires

5
votes

playsound () prend en charge de manière native MP3 tant qu'il est incorporé dans un fichier WAV. Les gens ne réalisent pas que WAV est un format de conteneur.

Téléchargez les utilitaires FFMPEG pour convertir l'en-tête et préserver le codec: p>

ffmpeg -i input.mp3 -c copy -f wav embedded_mp3.wav


1 commentaires

Cela fonctionne vraiment! Pour jouer au MP3, il suffit d'utiliser playsound (chemin, null, snd_async); il ne pouvait pas être plus simple.