同时播放两种声音的最简单方法(c++ winapi)

Posted

技术标签:

【中文标题】同时播放两种声音的最简单方法(c++ winapi)【英文标题】:the simplest way to play two sounds at the same time (c++ winapi) 【发布时间】:2013-02-02 23:54:45 【问题描述】:

有人可以帮助我制作简单的 win32 gui 应用程序(我正在使用 code::blocks),我可以在其中同时播放两种声音。当消息循环收到 WM_CREATE 我想开始播放 music.wav 时,每次用户点击窗口(WM_LBUTTONDOWN)我想播放 click.wav(不中断 music.wav)。搜索了一下,发现可以用directsound(directx)来做,但是太复杂了,因为功能比较多。是否可以以更简单的方式来做到这一点(比如 playsound api 函数之类的东西 - 我知道它不能同时播放两个声音,但有什么类似的)。如果可能的话,我想从资源中播放波形文件。

提前谢谢你

【问题讨论】:

你需要一个支持混音的库。像 DirectSound。有很多,你需要去购物。 是的,我知道我需要directsound,但是有没有简单的方法可以使用它播放两个声音(我不需要任何效果等等)......我想播放声音来自资源 我找到了解决方案:libZPlay 对我的项目来说已经足够好了。它不能从资源中播放波形,所以我想知道是否有任何方法可以获取资源文件“路径”,或者将文件从资源复制到磁盘? 【参考方案1】:

您可以使用 XAudio2,因为 DirectSound 已被弃用。

XAudio2 Introduction

阅读“入门”部分,有阅读和播放音频的示例代码。您只需要创建一个“母带”并添加一些声源即可。

【讨论】:

以上是关于同时播放两种声音的最简单方法(c++ winapi)的主要内容,如果未能解决你的问题,请参考以下文章

为啥我使用 WinAPI C++ 录制的声音无法正常播放?

在纯 WinAPI 中从内存缓冲区播放声音

如何在 Windows 上使用 C++ 在特定音频设备上播放声音?

qt中使用libsndfile实时播放声音c++

在 iPhone 应用程序中播放声音剪辑的最简单方法是啥?

如何在 Mac OS X 上使用 C++ 播放声音?