将使用 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 代码可以完成工作:
我有以下代码打印出连接到我的 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 代码可以完成工作: