从Visual C++中播放mp3的最简单方法

Mr.*_*Boy 6 audio winapi mp3 directshow mci

几年前,我在DShow/DSound周围编写了一些util库,让我在Windows C++应用程序中播放MP3.这仍然是在C++/MFC应用程序中执行此操作的常规方法,还是已经包含在常规Windows API中的DirectX区域?

我们的动机就是使用标准的Windows PlaySound方法进行WAV,并且希望能够使用类似的简单API来播放MP3,这些API可以是Windows提供的,也可以是我们编写的用于包装更复杂功能的东西.

编辑:这是一个大型的商业闭源项目.我们只想简单地玩游戏,为图书馆付出很多钱不会飞.

Gre*_*osz 6

您可以使用DirectShow的,但它不是DirectX的一部分或不再依赖于第三方库像低音,闪存模块,mpg123的,甚至libwmp3.

如果您不想再使用DirectShow(但为什么在现有代码继续工作的情况下进行更改?),您可以使用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);
Run Code Online (Sandbox Code Playgroud)


小智 5

PlaySound() 本身就支持 MP3,只要它嵌入在 WAV 文件中即可。人们没有意识到 WAV 是一种容器格式。

下载 ffmpeg 实用程序以转换标头并保留编解码器:

ffmpeg -i input.mp3 -c copy -f wav embedded_mp3.wav
Run Code Online (Sandbox Code Playgroud)


Tho*_*mas -1

你可以看看BASS。这是一个简单易用的音频库,免费供非商业用途。