【问题标题】:waveOutSetVolume ignoring the handlewaveOutSetVolume 忽略句柄
【发布时间】:2011-07-13 08:54:02
【问题描述】:

我的代码中有几个并行播放的波形句柄。

现在我想为每个波形手柄设置不同的音量。

有一个waveOutSetVolumewin32api函数:http://msdn.microsoft.com/en-us/library/ms713762%28v=vs.85%29.aspx

问题是,它完全忽略了我发送的句柄,它为我的程序中的所有波形句柄设置了音量。

如何使其将音量设置为特定的waveout句柄?

【问题讨论】:

  • 这是设计使然,您传递给 waveOutSetVolume 的句柄是 device 句柄,而不是流句柄。

标签: winapi volume waveform waveout


【解决方案1】:

我猜你正在向同一个设备写入数据。

要调整每个播放“流”的音量,请在将音频样本写入设备之前对其进行缩放。

另外请记住,不必使用两个设备句柄来有效地混合播放流。在您的代码中执行此操作很简单。

【讨论】:

  • 我需要以最小延迟进行实时混音。在写入设备之前混合/更改音量会产生明显的延迟。
  • 您的目标延迟是多少?更改音量(通过缩放音频样本)不需要缓冲,因此不会增加延迟。如果您进行混合,您可以保持较小的缓冲区大小并最大限度地减少延迟。如果您需要绝对最小的延迟,请查看 Kernel Streaming。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-27
  • 2021-11-15
  • 2021-07-03
相关资源
最近更新 更多