2012-04-15 133 views
4

我的设备有2个外部扬声器。我如何分别测试它们?如何在不同的扬声器上播放声音?

1个功能只能在左边播放声音,而只能在右边播放声音。

谷歌搜索没有成功。也许我使用的是错误的条款。

也许使用WIN32 API设置天平?

回答

4

如果您正在讨论立体声扬声器系统设置中的2个扬声器,那么您的解决方案很简单。

创建一个只在左声道播放的声音,然后播放它。然后,创建一个只能在右声道播放的声音,播放它。

您可以使用Audacity创建声音。

由于.NET API而言,你可以试试你的运气与http://windowsmedianet.sourceforge.net/

你可能需要的是http://msdn.microsoft.com/en-us/library/ms712636(VS.85).aspx,因为他们有他们整齐地包裹着。

编辑:

顺便说一句,你可以使用waveOutOpen两次打开同一台设备,而且一旦打左声音文件,并独立两个独立waveOutOpen设备上播放正确的声音文件句柄都指向同一个物理设备。根据声音的类型,声音将按照预期发出,根据您选择的扬声器发出。

此外,如果你想以编程方式创建的声音,只有左声道意味着你的音频文件每隔PCM样品应为0

我不推荐使用的平衡,因为混音器API很难要明白,并且你会偶然为两个播放的样本设置API。

甚至更​​多的信息:

您可以使用http://msdn.microsoft.com/en-us/library/system.media.soundplayer(VS.80).aspx播放WAV文件。如果您没有WAV文件,但您想播放MemoryStream中的内容,请在音频采样数据的前端找到某种形式的WAV文件头。你不会是第一个尝试它:)

1

我不认为.NET自己有足够的控制来做你所问的。您可能将不得不使用第三方库。检查出NAudio它一定能够做到你想要的。

相关问题