使用NAudio getcapabilities来识别特定的麦克风输入

时间:2014-08-14 18:04:57

标签: windows audio naudio

我正在使用NAudio来监控Windows 7工作站上的麦克风输入。我需要监控特定的麦克风输入。当程序在输入上检测到声音信号时,它会触发一个运行过程。我将麦克风设备名称存储在配置文件中。当我的程序启动时,它会通过将存储的名称与GetCapabilities报告的值匹配来查找设备:

Public Function findAudioinDeviceId(deviceName As String) As Integer

Dim deviceCount As Integer = NAudio.Wave.WaveIn.DeviceCount

Dim i As Integer
Dim d As NAudio.Wave.WaveInCapabilities

For i = 0 To deviceCount - 1
  d = NAudio.Wave.WaveIn.GetCapabilities(i)
  If d.ProductName = deviceName Then
    Return i
  End If
Next

Return -1

End Function

这一切都很棒。然而,有一天用户报告麦克风监视器停止工作。我注意到在用户工作站上,设备名称NAudio报告与存储的设备名称不同。

有问题的设备是USB音频适配器 - 它通过USB连接将麦克风连接到工作站。我注意到,当我将适配器插入不同的USB端口时,序列号在设备名称中添加/增加:

  • 第一个USB端口:麦克风(Logitech G430 Gamin
  • 第二个USB端口:麦克风(2-罗技G430 Ga
  • 第3个USB端口:麦克风(3-罗技G430 Ga
  • ...等...

有没有人知道用NAudio引用音频设备的可靠方法?请注意,我将有20个或更多客户安装具有相同的硬件设置。我希望能够在程序安装时设置设备名称。我也想避免告诉客户确保始终使用相同的USB端口。

0 个答案:

没有答案