2010-01-12 45 views
6

Alcuni anni fa, ho scritto una libreria di util su DShow/DSound per farmi riprodurre MP3 in un'applicazione Windows C++. È ancora il modo normale di farlo in un'applicazione C++/MFC o è un'area di DirectX che è stata inclusa nelle API generali di Windows?Il modo più semplice per riprodurre mp3 da Visual C++

La motivazione è semplicemente usiamo il metodo di Windows PlaySound standard per WAV, e vorremmo essere in grado di riprodurre file MP3 utilizzando un altrettanto semplice API, sia fornito da Windows o qualcosa che scriviamo per avvolgere le funzionalità più complesse.

EDIT: questo è per un grande progetto commerciale, a codice chiuso. E vogliamo solo giocare semplicemente, pagando molto perché una biblioteca non voli.

risposta

-1

Si potrebbe dare un'occhiata a BASS. È una libreria audio semplice da usare, gratuita per uso non commerciale.

6

È possibile utilizzare DirectShow ma non è parte di DirectX più o affidarsi a una libreria di terze parti come Bass, FMod, mpg123 o addirittura libwmp3.

Se non si desidera utilizzare DirectShow più (? Ma perché cambiare se il codice esistente continua a lavorare), è possibile utilizzare 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

Alcuni potenziali grattacapi con questo frammento: 1. Fare sicuro che il percorso del tuo file sia correttamente quotato \ " \" 2. Ho scoperto che l'invio di "close song1" immediatamente dopo "play song1" ha avuto l'effetto del suono non riprodotto. cioè il suono sarebbe stato aperto, quindi immediatamente chiuso. – Dave

0

Se non si vuole pagare alcuna licenza e vuoi fare in casa, fare l'analisi del tuo file mp3 e passarlo a XAudio2. È una cosa che puoi fare una volta (2-3 ore al massimo) e usarla sempre. : P

+0

Com'è meglio di DirectShow? Entrambi sono API MS, ma gli utenti avranno già DShow (probabilmente). C'è un vantaggio? –

+0

DirectShow ha un altro obiettivo, è per "multimedia" come per i multimedia il senso è molto ampio. (ed è comunque non più aggiornato) XAudio2 è il sostituto di DirectSound, è un basso livello API audio multipiattaforma Xbox360/PC. Microsoft vuole spingerlo come unica API da usare su Windows. – feal87

2

youc potrebbe usare MCI Windows funzioni, https://msdn.microsoft.com/en-us/library/ms709626

Può riprodurre molti formati di file audio tra cui MP3, WAV, MIDI, ecc

Se ricordo correttamente, non richiede DirectX.

La funzione PlaySound potrebbe funzionare anche per te.

0

PlaySound() supporta nativamente MP3 purché sia ​​incorporato in un file WAV. Le persone non si rendono conto che WAV è un formato contenitore. Scarica le utilità ffmpeg per convertire l'intestazione e preservare il codec:

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

Problemi correlati