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

时间:2010-01-12 14:58:17

标签: winapi mp3 directshow audio mci

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

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

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

6 个答案:

答案 0 :(得分:6)

您可以使用DirectShow,但它不再是DirectX的一部分,或依赖于第三方库,如BassFModmpg123甚至libwmp3。< / p>

如果您不想再使用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);

答案 1 :(得分:3)

这是播放任何音频文件的简便方法:http://msdn.microsoft.com/en-us/library/dd390090(VS.85).aspx

答案 2 :(得分:2)

Youc可以使用MCI窗口功能, https://msdn.microsoft.com/en-us/library/ms709626

它可以播放许多音频文件格式,包括MP3,WAV,MIDI等。

如果我没记错,它不需要DirectX。

PlaySound功能也可能对您有用。

答案 3 :(得分:2)

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

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

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

答案 4 :(得分:0)

如果您不想支付任何许可证并且想要在内部进行,请解析您的mp3文件并将其传递给XAudio2。 这是你可以做一次(最多2-3小时)并始终使用的事情。 :P

答案 5 :(得分:-1)

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

相关问题