微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我的 USB 摄像头 - 一旦与 Zoom 一起使用 - 让我的显示器保持开启状态?

如何解决为什么我的 USB 摄像头 - 一旦与 Zoom 一起使用 - 让我的显示器保持开启状态?

在我的 Linux (Ubuntu/Gnome/X11) 计算机上,我注意到在某些情况下,即使我不移动鼠标或产生任何其他通常会阻止我的系统进入空闲模式的输入,我的显示器也会永远保持打开状态.

为了更好地监控正在发生的事情,我启动了一个小脚本来持续显示 X11 空闲时间:

#!/usr/bin/env python3
import ctypes
import ctypes.util
import time

class XScreenSaverInfo(ctypes.Structure):
    _fields_ = [
            ('window',ctypes.c_ulong),('state',ctypes.c_int),('kind',('til_or_since',('idle',('eventMask',ctypes.c_ulong)
    ]

XScreenSaverInfo_p = ctypes.POINTER(XScreenSaverInfo)
display_p = ctypes.c_void_p
xid = ctypes.c_ulong
c_int_p = ctypes.POINTER(ctypes.c_int)
libX11path = ctypes.util.find_library('X11')
libX11 = ctypes.cdll.LoadLibrary(libX11path)
libX11.XOpendisplay.restype = display_p
libX11.XOpendisplay.argtypes = ctypes.c_char_p,libX11.XDefaultRootwindow.restype = xid
libX11.XDefaultRootwindow.argtypes = display_p,libXsspath = ctypes.util.find_library('Xss')
libXss = ctypes.cdll.LoadLibrary(libXsspath)
libXss.XScreenSaverQueryExtension.argtypes = display_p,c_int_p,c_int_p
libXss.XScreenSaverAlLocinfo.restype = XScreenSaverInfo_p
libXss.XScreenSaverQueryInfo.argtypes = (display_p,xid,XScreenSaverInfo_p)
dpy_p = libX11.XOpendisplay(None)
_event_basep = ctypes.c_int()
_error_basep = ctypes.c_int()
libXss.XScreenSaverQueryExtension(dpy_p,ctypes.byref(_event_basep),ctypes.byref(_error_basep))
xss_info_p = libXss.XScreenSaverAlLocinfo()
rootwindow = libX11.XDefaultRootwindow(dpy_p)

while True:
    time.sleep(0.1)
    libXss.XScreenSaverQueryInfo(dpy_p,rootwindow,xss_info_p)
    print(xss_info_p.contents.idle)

经过一番调查,我发现我可以卸下 USB 网络摄像头,让那些空闲的秒数再次上升! 重新连接它不会让我的系统再次空闲,但运行独立的 Zoom 客户端并使用此相机会。 退出/杀死客户端无济于事,我必须物理分离相机。之后我什至尝试使用另一个应用程序访问相机(以清理相机状态),但没有任何效果。 使用我的内置笔记本电脑摄像头不会显示相同的结果,在其他应用程序中使用 USB 摄像头也不会显示相同的结果(我在浏览器中尝试了 Cheese 和 Jitsi)。

所以现在我知道了:插入 USB 摄像头并通过 Zoom 客户端访问它会将摄像头变成发送“用户输入”(就 XScreenSaverQueryInfo 而言)的设备,并且这种状态一直持续到我拔下它为止再次。

虽然我的系统没有闲置只是不舒服,但当我将 USB 网络摄像头与 Zoom(或任何其他有此问题的软件)一起使用时,我的屏幕时间跟踪器 (https://github.com/frans-fuerst/track/) 会报告不良结果

我该如何进一步调查这种行为?

(系统信息:Ubuntu 18.04 / Zoom 客户端 5.6.7 / 摄像头:LOETAD Webcam 1080P Full HD)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。