Cómo reproducir archivos MP3 en C?

Estoy buscando la manera más fácil de reproducir un archivo MP3 en C. Estoy buscando ya sea una biblioteca, en la que podría llamar a la función en el nombre del archivo, o un ejecutable que simplemente se ejecutará y saldrá. Por favor recomiende.

Usando FMOD (plataforma cruzada), esto debería ser tan simple como esto:

#include  #include "inc/fmod.h" FSOUND_SAMPLE* handle; int main () { // init FMOD sound system FSOUND_Init (44100, 32, 0); // load and play mp3 handle=FSOUND_Sample_Load (0,"my.mp3",0, 0, 0); FSOUND_PlaySound (0,handle); // wait until the users hits a key to end the app while (!_kbhit()) { } // clean up FSOUND_Sample_Free (handle); FSOUND_Close(); } 

Como nota al margen, te sugiero que uses C ++ en vez de C.

La DLL BASS es realmente fácil de usar y probablemente haga lo que necesita. Sin embargo, solo es gratis para uso no comercial.

Si necesita más control, necesitará un códec (prefiero libMad ) y una API de salida de sonido como DirectSound en Windows o ALSA o Linux (o cualquier cosa que los chicos de Linux usen para sonido esta semana)

No sé si es “la manera más fácil”, pero podría echar un vistazo a SDL (junto con SDL_sound).

En Win32, no necesita ninguna biblioteca. Use la api estándar de Win32 (el mp3 es nativo)

Ver en Adv. Win32 api newsgroup: noticias: //comp.os.ms-windows.programmer.win32 donde es un FAQ.

Si está en Windows o OSX, recomiendo BASS ( http://www.un4seen.com/bass.html )

Puede descargar la biblioteca y mirar la muestra del código para comenzar. El ejemplo de “concurso” en el directorio C es un buen punto de partida.

Si puede usar C ++ y si está trabajando en la plataforma Windows, use WMp3

Esa biblioteca es fácil de usar y te permite jugar, pausar, buscar en archivos mp3.

como alternativa, algo que alguien ya ha escrito se ejecutará y abandonará.

Puedes usar mpg123 (o el puerto de punto fijo de él, mpg321 )

 mpg123  

reproducirá un archivo mp3 y saldrá.

mpg123 tiene una interfaz remota genérica a la que accede iniciando el ejecutable con la opción -R. A continuación, puede enviar comandos (como carga, pausa, etc.) a través de una tubería fifo o al stdin del subproceso. Si nada más es fácil de depurar y probar manualmente.