将使用 wmi 的代码转换为使用 ffmpy 的代码

Converting code using wmi to code using ffmpy

我有以下代码打印出连接到我的 PC 的 USB 摄像头的名称:

import wmi
c = wmi.WMI()
wql = "Select * From Win32_USBControllerDevice"
for item in c.query(wql):
    a = item.Dependent.PNPClass
    b = item.Dependent.Name.upper()
    if (a.upper() == 'MEDIA' or a.upper() == 'CAMERA') and 'AUDIO' not in b:
        print(item.Dependent.Name)

此代码的问题在于它仅适用于 Windows。我想更改此代码以使其适用于所有操作系统。我知道我必须使用 wmi 以外的东西,因为 wmi 只能在 Windows 中工作。所以,我正在考虑使用一个名为 ffmpy 的 ffmpeg 包装器。那么也许我可以将代码转换为使用 ffmpy?我从下面的 SO post: 得到了上面的代码。任何帮助将非常感激!谢谢!

您可以 pygrabber 试一试。 “# 此代码列出了连接到您的 PC 的摄像头:”(source)

from pygrabber.dshow_graph import FilterGraph

graph = FilterGraph()
print(graph.get_input_devices())

# ['Integrated Webcam', 'EpocCam Camera']

这个问题的答案是否定的;没有 OS-independent 获取连接到您 PC 的 USB 摄像头名称的方法。但是,有 platform-specific 代码可以完成工作: