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提供的,也可以是我们编写的用于包装更复杂功能的东西.
编辑:这是一个大型的商业闭源项目.我们只想简单地玩游戏,为图书馆付出很多钱不会飞.
您可以使用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)