我正在使用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端口时,序列号在设备名称中添加/增加:
有没有人知道用NAudio引用音频设备的可靠方法?请注意,我将有20个或更多客户安装具有相同的硬件设置。我希望能够在程序安装时设置设备名称。我也想避免告诉客户确保始终使用相同的USB端口。