在Windows上的python2.7中,我需要获得默认麦克风的名称,它将是一个字符串,例如“microscope(2-High-Definition Audio Device)”。在
我的第一次尝试是使用子进程wmic path Win32_SoundDevice get * /format:list
查询WMI。不幸的是,这似乎返回了扬声器和麦克风,我看不到任何属性可以让我区分这两者。此外,正确设备的名称格式不正确,例如,它只是显示为“高清晰度音频设备”,而不是完整的正确字符串“麦克风(2-高清音频设备)”。在
我的第二次尝试是使用PyAudio(python绑定到PortAudio)。调用PyAudio().get_default_input_device_info()["name"]
让我非常接近,但不幸的是,由于某种原因,名称被截断了!返回值为“microscope(2-高清)”(截断为31个字符长度)。如果我只能得到这个字符串的非截断版本,那就太完美了。在
有什么想法可以让你最简单、最独立地获得默认麦克风名称?谢谢!在
根据我使用PortAudio的经验,MME设备的名称被缩短为32个字符。我一直认为这种行为是特定于wmmeapi的。您应该能够在其他api(如DirectSound或WASAPI)中查询有关同一物理设备的信息。(在C/C++中,这要求PARTAUDIO被配置为用WASAPI和/或DistToScript编译)。如果您将同一物理设备查询为WASAPI或DistToS音设备,则设备名称的所有字符都是可访问的。您应该能够通过获取默认设备名称,然后搜索与之匹配的另一个设备来完成此操作。在
获取默认DirectSound输入设备名称的python代码应该如下所示:
^{1}$显然,我可以从ffmpeg获取完整的字符串,如下所示:
ffmpeg -list_devices true -f dshow -i dummy
然后麦克风的名字就会出现在“DirectShow audio devices”后面
相关问题 更多 >
编程相关推荐