【问题标题】:Output sound on a specific speaker on a 5.1 surround system using dsound.h library使用 dsound.h 库在 5.1 环绕系统上的特定扬声器上输出声音
【发布时间】:2022-01-17 01:37:04
【问题描述】:

我有一个 5.1 环绕声系统,用于输出一些 WAV 文件。我正在用 C++ 编写一种在其中一个扬声器上输出声音的方法。

基本上有什么办法可以说,x.wav 文件只在角落的左扬声器上输出声音?喜欢说话者生成地址吗?

【问题讨论】:

  • dsound 可能不是合适的工具,但 XAudio2 可能是。

标签: c++ winapi speaker


【解决方案1】:

您最好的选择可能是输出完整的 5.1 流,但为您不想播放的频道输出零样本。这很容易做到,并且将控制哪个扬声器实际上是“活跃的”。一点实验应该可以知道对应哪个通道。

输出流具有交错的通道,顺便说一句,因此在编写代码时要考虑到这一点。

【讨论】:

  • 虽然这可行,但最好将 API 用于空间音频。例如。 XAudio2
  • @Mgetz 哦,对,不熟悉,谢谢。
  • 我在该建议中做了一些假设:OP 正在制作游戏或合成 5.1/7.1 音频没有意义的东西(如果他们只是在做扬声器测试,最好合成)。他们需要在运行时精确控制哪个扬声器。
  • @PaulSanders 非常感谢。我会尽量考虑到这一点。但我的问题是我真的不知道如何将特定的音频文件发送给特定的扬声器。像 m_Buffer->PlaySound() ,如果我们调用函数 PlaySound(),它已经知道 setSpeakerconfig(xxxxx address) 代表 5 个扬声器之一?
  • @VINBENzerozerosept 你也许可以使用IDirectSound3DBuffer,但这对于积极支持的XAudio2 和X3DAudio 来说确实是一个更好的工作。 DirectSound 被认为是非常传统的,可能无法按预期工作。
猜你喜欢
  • 2016-03-04
  • 1970-01-01
  • 2017-08-17
  • 1970-01-01
  • 1970-01-01
  • 2014-01-22
  • 1970-01-01
  • 1970-01-01
  • 2016-07-18
相关资源
最近更新 更多