2010-01-12 15 views
6

Hace unos años, escribí una biblioteca de utilidades en DShow/DSound para permitirme reproducir archivos MP3 en una aplicación de Windows C++. ¿Sigue siendo la forma normal de hacerlo en una aplicación C++/MFC, o es un área de DirectX que se ha incluido en las API generales de Windows?Manera más simple de reproducir mp3 desde Visual C++

La motivación es simplemente que utilizamos el método estándar Windows PlaySound para WAV, y nos gustaría poder reproducir archivos MP3 utilizando una API similarmente simple, ya sea proporcionada por Windows o algo escrito para envolver una funcionalidad más compleja.

EDITAR: esto es para un proyecto grande, comercial y de código cerrado. Y solo queremos jugar cosas simples, pagar mucho por una biblioteca no volará.

Respuesta

-1

Puedes echar un vistazo a BASS. Es una biblioteca de audio fácil de usar, gratis para uso no comercial.

6

También se puede usar DirectShow pero no es parte de DirectX más o depender de una biblioteca de terceros, como Bass, FMod, mpg123 o incluso libwmp3.

Si no desea utilizar más de DirectShow (? Pero ¿por qué cambiar si su código existente sigue trabajando), puede utilizar MCI:

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

Unos trampas potenciales con este fragmento: 1. Hacer Asegúrese de que la ruta de acceso al archivo esté correctamente citada \ " \" 2. Encontré que al enviar "close song1" inmediatamente después de "play song1" tuve el efecto de que el sonido no se reproducía. es decir, el sonido se abriría y luego se cerraría inmediatamente. – Dave

0

Si no quieren pagar ninguna licencia y quiero hacer en casa, hacer el análisis de tu archivo mp3 y pasarlo a XAudio2. Es algo que puedes hacer una vez (2-3 horas como máximo) y usar siempre. : P

+0

¿Cómo es eso mejor que DirectShow? Ambas son MS API, pero los usuarios ya tendrán DShow (probablemente). ¿Hay una ventaja? –

+0

DirectShow tiene otro objetivo, es para "multimedia" en cuanto a multimedia, el sentido es muy amplio. (y de todos modos ahora ya no está actualizado) XAudio2 es el reemplazo de DirectSound, es un bajo nivel Audio API multiplataforma Xbox360/PC. Microsoft quiere impulsarlo como la única API que se usará en Windows. – feal87

2

youc podría utilizar MCI funciones de Windows, https://msdn.microsoft.com/en-us/library/ms709626

Se puede reproducir muchos formatos de archivos de audio como MP3, WAV, MIDI, etc.

Si recuerdo correctamente, no requiere DirectX.

La función PlaySound también podría funcionar para usted.

0

PlaySound() admite nativamente MP3 siempre que esté incrustado en un archivo WAV. Las personas no se dan cuenta de que WAV es un formato de contenedor. descargar las utilidades ffmpeg para convertir el encabezado y preservar el códec:

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

Cuestiones relacionadas