当我在一个扬声器上打开独占模式音频流时,发出奇怪的嗡嗡声。这种嗡嗡声不会在其他设备上的相同条件下发生,通常也不会在独占推送模式或共享模式下发生。
问题似乎是WASAPI将周期设置为比我请求的周期高5毫秒,而没有特别的原因。我尝试10 ms来查看timeGetTime()以揭示15 ms的时间段,所以我尝试请求15 ms。周期变为20毫秒。我的其他设备(与问题设备在相同条件下进行流式传输)不会发生这种情况,并且timeGetTime()揭示的周期性等于所请求的周期性。这是某个地方的驱动程序故障吗,还是我可能在代码中做出了不该做的假设?
更新:当我在启动流之前发送一个静默数据包时,嗡嗡声消失了。我不确定这会如何影响周期性,因此我仍在寻找解释。
最佳答案
感谢MSDN的Maurits帮助我找出答案。
WASAPI文档指示在开始之前应将一段音频发送到设备,以避免启动故障。这里听到的嗡嗡声可算是其中之一。只有我的放大器是USB连接的设备,而其他非USB设备却没有(其他两个设备包括内置笔记本电脑扬声器和HDMI连接的电视监视器)才有此问题的原因是因为它使用了与其他两种不同类型的流媒体(“标准流媒体”而不是“标准循环流媒体”)。
关于c++ - WASAPI Exclusive/Event模式导致嗡嗡声,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24216137/