我正在申请:

  • 从麦克风录音并对输入进行一些实时处理
  • 播放 MP3 文件(一首普通歌曲),但实时操作输出
  • 有时我也需要在这首歌上播放额外的声音,但我想我可以通过简单地添加缓冲区来做到这一点。

简而言之,我需要有用于录制和播放的循环缓冲区,并且我需要每 20 毫秒左右向输出缓冲区“馈送”即将播放的新数据。

我一直在研究 DirectSound,它似乎没有多大帮助。输出缓冲区的读取和写入看起来与 Win32 非常相似,唯一有帮助的地方是在主歌曲上播放“附加声音”。

我应该使用 DirectSound,还是应该直接使用原始 Windows API?
DirectSound 能为我做些什么吗?

提前致谢!

有帮助吗?

解决方案

Directsound API 为您提供更好的实时控制。它们也是 Windows 中支持的使用声音的方式。我的印象是 win32 api 已被废弃,但我对此可能是错的。

这个问题很接近你的问题

https://stackoverflow.com/questions/314522/what-is-the-best-c-sound-api-for-windows

DirectSound 是 Windows 上最好的音频抽象层吗?

最后但并非最不重要的一点是,这是微软必须说的 http://msdn.microsoft.com/en-us/library/dd370784(VS.85).aspx

其他提示

两者都不?:)

故事是 DirectSound 是 waveOut 的替代品,但 DirectSound 在 Vista 中作为已弃用的 API 加入了 DirectInput 并被替换为 WASAPI. 。DirectSound 和waveOut 是在Vista 中的用户空间WASAPI 之上实现的。在 XP 上,waveOut 和 DirectSound 提供相同的内核级 Mixer API。

为了整合所有这些接口,请查看 OpenAL 之类的接口,它是一个与 OpenGL 一样得到良好支持的音频标准。

听起来您对延迟非常敏感。可能值得一看 澳大利亚安全情报组织

我发现 Harmony Central - 音频编程. 。另请阅读 w:直接声音.

Windows Vista具有基于通用音频体系结构的完全重写的音频堆栈。由于重新设计的音频堆栈的架构变化,因此不存在从指导到音频驱动程序的直接路径。

由于Xbox 360和Microsoft Windows Integration,Microsoft正在积极推动开发人员将新应用程序迁移到等效的Xbox音频API,例如Xaudio和XACT。

开放AL 看起来很有希望。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top