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? P>
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. P>
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. P>
6 Réponses :
Vous pourriez avoir un coup d'œil à Bass . C'est une bibliothèque audio simple à utiliser gratuitement pour une utilisation non commerciale. P>
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);
Quelques potentiels gotcharas avec cet extrait: 1. Assurez-vous que le chemin de votre fichier est correctement cité \ "
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 p>
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.
Ceci est un moyen facile de lire n'importe quel fichier audio:
YOUC pourrait utiliser des fonctions Windows MCI, https://msdn.microsoft.com/en-us/library/ms7096266 p>
Il peut jouer à de nombreux formats de fichiers audio, y compris MP3, WAV, MIDI, etc. P>
Si je me rappelle correctement, cela ne nécessite pas DirectX. P>
La fonction PlaySound pourrait également fonctionner pour vous. P>
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
Cela fonctionne vraiment! Pour jouer au MP3, il suffit d'utiliser playsound (chemin, null, snd_async); code> il ne pouvait pas être plus simple.