3

我需要选择 waveout 设备来播放声音。但我不能那样做。

void Initialize()
{
_WaveOut = new WaveOut();
var reader = new WaveFileReader(FileName);
_WaveOut.Init(new WaveChannel32(reader));
}

此函数启动,然后表单启动。在我的表单上之后,我选择带有组合框的 waveout 设备。组合框填充了以下代码:

for (int i = 0; i < WaveOut.DeviceCount; i++)
{
     WaveOutCapabilities WOC = WaveOut.GetCapabilities(i);
     comboBox2.Items.Add(WOC.ProductName);

}

在此之后,我选择我的设备。

int WaveOutDeviceId = comboBox2.SelectedIndex;

并启动播放功能:

void Play()
{
_WaveOut.DeviceNumber = WaveOutDeviceId;
_WaveOut.Play();
}

但我的声音总是在默认设备上播放(数字 = 0)。如果我为麦克风执行此操作,则此代码可以正常工作。

4

1 回答 1

7

一旦你打电话Init,改变就太晚了DeviceId。我建议创建一个新实例来说明WaveOut何时要更改设备。

于 2012-11-07T14:27:19.203 回答