NAudio WaveOut 设备 ID

Posted

技术标签:

【中文标题】NAudio WaveOut 设备 ID【英文标题】:NAudio WaveOut Device ID 【发布时间】:2012-11-07 09:35:44 【问题描述】:

我需要选择 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)。如果我为麦克风执行此操作,则此代码可以正常工作。

【问题讨论】:

【参考方案1】:

一旦您致电Init,再更改DeviceId 为时已晚。当你想更换设备时,我建议创建一个WaveOut 的新实例。

【讨论】:

谢谢,您的回答很有帮助。

以上是关于NAudio WaveOut 设备 ID的主要内容,如果未能解决你的问题,请参考以下文章

WaveBadFormat 调用 .Init() 非默认音频设备 Naudio 时

Naudio - 处理 WaveIn / WaveOut

NAudio 中的静音功能 (waveOut)

使用 NAudio 交叉淡入淡出

NAudio 多个 WaveOut 对象

NAudio - 停止 WaveOut 播放