麦克风的声音与扬声器的声音

时间:2011-12-17 14:04:28

标签: c++ api windows-xp waveform

我想分别从麦克风和扬声器中捕捉音频。我该如何区分它们?我可以使用Wave API捕获一个或另一个,例如WaveInOpen()。

当我使用waveInGetNumDevs()和waveInGetDevCaps()/ waveoutGetDevCaps()枚举设备时,似乎没有与特定端点设备(例如,麦克风或扬声器)相关的信息。我只看到以下,它们是适配器设备:

高清读取音频输入
高清读取音频输出
网络摄像头......

1 个答案:

答案 0 :(得分:0)

我实际上并不了解Windows API,所以我的答案可能不是最好的,甚至可能有更好的方法。

    HRESULT hr = CoInitialize(NULL);
    IMMDeviceEnumerator *pEnum = NULL;
    hr = CoCreateInstance(__uuidof(MMDeviceEnumerator), NULL, CLSCTX_ALL, __uuidof(IMMDeviceEnumerator), (void**)&pEnum);
    if(SUCCEEDED(hr))
    {
      IMMDeviceCollection *pDevices;
      // Enumerate the output devices.
      hr = pEnum->EnumAudioEndpoints(eAll, DEVICE_STATE_ACTIVE, &pDevices);
      // You can choose between eAll, eCapture or eRender
    }

通过它,您可以区分输入(捕获)和输出(渲染)。 (这就是你想要的吗?)

代码取自this article。您可以查看它以获取正确的API调用和库,它甚至可能会为您提供更多信息。

希望这有用。