windwos和linux下获取当前使用的麦克风型号

1小时前学习6

需求是浏览器获取当前麦克风型号,对不支持的型号做限制,

最开始想的通过js后去麦克风型号,但是在windows下测试的没问题,到linux系统下就不行了

历览器输入以下地址可以看到支持的硬件信息

chrome://media-internals/

image.png

在windows下可以看到支持的型号,

但是在linux下看不到

image.png

windwo下需要使用 sounddevice 库,linux下使用 pulsectl

 

import sys

def get_windows_active_mic():
    """Windows 系统:通过 COM/pycaw 接口精确获取当前默认输入的麦克风型号"""
    import sounddevice as sd

    devices = sd.query_devices()

    default_in_id = sd.default.device[0]
    # print("默认录音设备ID:", default_in_id)
    # print("默认录音设备ID:", devices[default_in_id])
    
    return devices[default_in_id]['name']

def get_active_mic_pulsectl():
    import pulsectl
    try:
        with pulsectl.Pulse('get-mic-script') as pulse:
            # 1. 获取默认 Source 的名称
            server_info = pulse.server_info()
            default_source_name = server_info.default_source_name

            # 2. 遍历 Source 寻找描述信息
            for source in pulse.source_list():
                if source.name == default_source_name:
                    # 获取 friendly 名称
                    desc = source.proplist.get('device.description') or source.description
                    return desc
        return "未找到设备"
    except Exception as e:
        return f"获取失败: {e}"

def get_active_mic():
    print(sys.platform)
    """根据操作系统自动路由"""
    if sys.platform.startswith("win"):
        return get_windows_active_mic()
    elif sys.platform.startswith("linux"):
        return get_active_mic_pulsectl()
    else:
        return f"暂不支持的操作系统: {sys.platform}"

if __name__ == "__main__":
    print("当前正在使用的麦克风型号:", get_active_mic())

 

image.png

image.png

 

扫描二维码推送至手机访问。

版权声明:本文由星光下的赶路人发布,如需转载请注明出处。

本文链接:https://forstyle.cc/zblog/post/126.html

分享给朋友: