【问题标题】:How to get audio input from usb microphone with C# and NAudio如何使用 C# 和 NAudio 从 USB 麦克风获取音频输入
【发布时间】:2017-09-12 17:33:52
【问题描述】:

我正在尝试使用 NAudio 从 USB 设备获取音频输入。 我正在使用 WavIn 类,但像这样:

NAudio.Wave.WaveIn input = new NAudio.Wave.WaveIn();
input.DeviceNumber=0;

但我不知道如何获取我的 micro 设备号。 我知道这种方法:

WaveIn.GetCapabilities();

但是没有my micro,因为它不被识别为麦克风。 我也可以像这样得到我的 USB 设备:

    System.Management.ManagementObjectSearcher searcher = new System.Management.ManagementObjectSearcher(@"Select * From Win32_USBHub");
    var devices = searcher.Get();
    foreach(var d in devices)
    {
        var deviceId = (string)d.GetPropertyValue("DeviceID");
        var pnpDeviceID = (string)d.GetPropertyValue("PNPDeviceID");
        var description = (string)d.GetPropertyValue("Description");
    }

但我无法将其传递给 WaveIn。

如何使用 NAudio 获取 USB 设备输入?

【问题讨论】:

    标签: c# .net usb wav naudio


    【解决方案1】:

    如果你想用WaveIn 记录它,你需要它出现在可用的WaveIn 设备列表中:

    for (int n = 0; n < WaveIn.DeviceCount; n++)
    {
        var caps = WaveIn.GetCapabilities(n);
        Console.WriteLine($"{n}: {caps.ProductName} {caps.Channels}");
    }
    

    或者,它可以通过WasapiCapture 访问:

    var deviceEnum = new MMDeviceEnumerator();
    
    foreach (var device in deviceEnum.EnumerateAudioEndPoints(DataFlow.Capture, DeviceState.Active))
    {
        Console.WriteLine($"{device.ID}: {device.DeviceFriendlyName} / {device.FriendlyName}");
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-14
      • 1970-01-01
      • 2017-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-16
      相关资源
      最近更新 更多