7

几年前,我围绕 DShow/DSound 编写了一些实用程序库,让我可以在 Windows C++ 应用程序中播放 MP3。这仍然是在 C++/MFC 应用程序中执行此操作的正常方式,还是 DirectX 的一个区域已被纳入一般 Windows API?

动机很简单,我们使用标准的 Windows PlaySound 方法来播放 WAV,并希望能够使用类似的简单 API 播放 MP3,或者由 Windows 提供,或者我们编写的东西来包装更复杂的功能。

编辑:这是一个大型的商业闭源项目。而且我们只想玩简单的东西,花很多钱买一个图书馆是不会飞的。

4

6 回答 6

7

您可以使用 DirectShow 但它不再是 DirectX 的一部分,或者依赖第三方库,如BassFModmpg123甚至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);
于 2010-01-12T15:02:51.203 回答
5

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

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

ffmpeg -i input.mp3 -c copy -f wav embedded_mp3.wav
于 2017-08-22T11:39:26.027 回答
3

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

于 2010-01-20T16:02:24.150 回答
2

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

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

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

PlaySound 功能也可能适合您。

于 2010-01-25T16:42:51.780 回答
0

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

于 2010-01-12T15:45:09.703 回答
-1

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

于 2010-01-12T15:02:48.053 回答