如何在不同的扬声器上播放声音?

4

我的设备有两个外部扬声器。我该如何分别测试它们?

需要一个仅在左侧播放声音的功能和一个仅在右侧播放声音的功能。

我已经尝试了谷歌搜索,但没有成功。也许我使用的术语不正确。

也许可以使用WIN32 API设置平衡?

2个回答

4
如果您谈论的是立体声扬声器系统设置中的两个扬声器,那么您的解决方案就很简单。
创建一个仅在左声道播放的声音,然后播放它。 然后,创建一个仅在右声道播放的声音,播放它。
您可以使用Audacity创建声音。
就.NET API而言,您可以尝试使用http://windowsmedianet.sourceforge.net/
您可能需要的是http://msdn.microsoft.com/en-us/library/ms712636(VS.85).aspx,因为它们已经整齐地包装好了。
编辑:
顺便说一下,您可以使用waveOutOpen两次打开同一设备,然后在两个独立的waveOutOpen设备句柄上分别播放LEFT声音文件和RIGHT声音文件,这两个设备句柄都指向同一物理设备。 声音将按预期输出,取决于所选声音类型的扬声器。
此外,如果要以编程方式创建声音,则仅具有LEFT通道意味着音频文件中每隔一个PCM样本应为0。
我不建议使用balance,因为混音器API很难理解,而且您会意外设置播放样本的API。更多信息:您可以使用http://msdn.microsoft.com/en-us/library/system.media.soundplayer(VS.80).aspx来播放WAV文件。如果您没有WAV文件但想从MemoryStream播放某些内容,请找到一种方法在音频样本数据前面插入某种形式的WAV头。您不会是第一个尝试的人 :)

1

我觉得单凭.NET本身是无法做到你要求的控制。你可能需要使用一个第三方库。查看一下NAudio,它肯定能满足你的需求。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接