【问题标题】:How to detect the presence of a default recording device in the system?如何检测系统中是否存在默认录音设备?
【发布时间】:2010-09-07 15:59:51
【问题描述】:

如何检测系统是否安装了默认录音设备? 我敢打赌这可以通过调用 Win32 API 来完成,有人有这方面的经验吗?

我说的是通过代码执行此操作,而不是通过打开控制面板并查看声音选项。

【问题讨论】:

    标签: winapi audio device


    【解决方案1】:

    使用DirectX SDK,您可以调用 DirectSoundCaptureEnumerate,它将为系统上的每个 DirectSoundCapture 设备调用您的 DSEnumCallback 函数。传递给 DSEnumCallback 的第一个参数是 LPGUID,它是“标识正在枚举的设备的 GUID 的地址,或者主设备为 NULL”。

    如果您需要做的只是找出是否存在录制设备(如果您确实需要知道默认设备,我认为这还不够),您可以使用 waveInGetNumDevs:

    #include <tchar.h>
    #include <windows.h>
    #include "mmsystem.h"
    
    int _tmain( int argc, wchar_t *argv[] )
    {
        UINT deviceCount = waveInGetNumDevs();
    
        if ( deviceCount > 0 )
        {
            for ( int i = 0; i < deviceCount; i++ )
            {
                WAVEINCAPSW waveInCaps;
    
                waveInGetDevCapsW( i, &waveInCaps, sizeof( WAVEINCAPS ) );
    
                // do some stuff with waveInCaps...
            }
        }
    
        return 0;
    }
    

    【讨论】:

      【解决方案2】:

      有一个名为 PortAudio 的开源音频 API,它有一个您可以使用的方法。我认为这个方法叫做 Pa_GetDeviceInfo() 什么的。

      【讨论】:

        【解决方案3】:

        win32 api 有一个名为waveInGetNumDevs 的函数。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-05-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多