Windows:获取默认麦克风名称

2024-06-26 14:21:31 发布

您现在位置:Python中文网/ 问答频道 /正文

在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个字符长度)。如果我只能得到这个字符串的非截断版本,那就太完美了。在

有什么想法可以让你最简单、最独立地获得默认麦克风名称?谢谢!在


Tags: path字符串名称get进程devicewindowsaudio
2条回答

根据我使用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”后面

相关问题 更多 >