我有一个网络摄像头,它有按钮。在Windows中,当我按下该按钮时,它会抓取图像快照。但现在我在linux上,我正在使用VLC从我的usb网络摄像头观看视频" / dev / video0"。我想使用python一旦推送就从该按钮获取信号 - 我的意思是获取此信号(不自动获取快照)。 我试着谷歌,但没有运气。我不想使用opencv或gstreamer将视频导入新窗口,我只需要在按下网络摄像头上时抓取信号。知道如何获得这个信号吗?
答案 0 :(得分:1)
使用python-evdev
,您可以捕获鼠标,键盘,...以及网络摄像头等输入设备触发的事件
evdev是内核用于转发的仅Linux通用协议 有关用户空间的输入设备的信息和事件。它不仅仅是 对于鼠标和键盘,但任何具有任何轴,键的设备 或按钮,包括网络摄像头和遥控器等。每 设备表示为设备节点的形式 / dev / input / event0,随着您添加更多内容,尾随数字会增加 设备。拔下设备后重新使用节点号,所以 不要将设备节点硬编码到脚本中。设备节点是 也只能由root读取,因此您需要运行任何调试工具 也是根。
http://who-t.blogspot.de/2016/09/understanding-evdev.html
网络摄像头的按钮也分配了一个事件,你必须找到/dev/input/
个文件夹
从http://python-evdev.readthedocs.io/en/latest/tutorial.html运行以下代码以获取网络摄像头的/dev/input
路径:
列出可访问的事件设备
import evdev
devices = [evdev.InputDevice(fn) for fn in evdev.list_devices()]
for device in devices:
print(device.fn, device.name, device.phys)