Звук из микрофона против звука из динамика - PullRequest
0 голосов
/ 17 декабря 2011

Я хочу захватывать звук с микрофона и динамика - отдельно.Как я могу отличить их?Я могу захватить одно или другое с помощью Wave API, например WaveInOpen ().

Когда я перечисляю устройства, используя waveInGetNumDevs () и waveInGetDevCaps () / waveoutGetDevCaps (), похоже, никакой информации, связаннойконкретное конечное устройство (например, микрофон или динамик).Я вижу только следующие устройства-адаптеры:

Аудио вход HD для чтения
Аудио выход HD для чтения
Веб-камера ...

1 Ответ

0 голосов
/ 17 декабря 2011

Я на самом деле не знаю 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
    }

С этим вы сможете различать ввод (захват) и вывод (рендер).(Это то, что вы хотели, верно?)

Код взят из этой статьи .Вы можете посмотреть на него правильные вызовы API и библиотеки, он даже может дать вам больше информации.

Надеюсь, это полезно.

...