Dan*_*row 6 macos video-conferencing
是的,我意识到当摄像机打开时我可以只看绿灯。这不是重点。
我想编写一个小实用程序,用于在麦克风或摄像机使用时进行通知。我没有兴趣知道什么应用程序正在使用它。我只想知道麦克风/摄像头是打开还是关闭。
这对于作为父母的我来说。我想我可以得到那些变色的 LED 灯之一,然后当相机/麦克风打开时,我的应用程序可以检测到它,然后向灯发送信号以改变颜色。然后当我的一个孩子走进来时,他们会看到灯是“红色”(意思是,请勿打扰),并且他们会知道我正在参加电话会议。
小智 6
我有几乎完全相同的问题需要解决。这是我的原型解决方案:它监视 AppleCamera 进程的线程数。在测试 MacBook 上,基本线程数似乎是 3。当应用程序使用摄像头时,线程数会增加到 4。我还计划实现麦克风检查。我确信我的代码可以更紧凑,并且我可以将 shell 命令简化为一行,但我更喜欢可读性。
import time
import subprocess
import pywemo
DEVICE_NAME = "BatSignal"
def count_camera_threads():
command = ["pgrep", "AppleCamera"]
process = subprocess.run(command, capture_output=True, text=True)
pid = process.stdout.replace("\n", "")
command = ["ps", "M", pid]
process = subprocess.run(command, capture_output=True, text=True)
lines = process.stdout
count = len(lines.splitlines()) - 2
return count
def get_device(name):
devices = pywemo.discover_devices()
for device in devices:
if device.name == name:
return device
return None
if __name__ == "__main__":
device = get_device(DEVICE_NAME)
if device is None:
exit(f"Unable to find '{DEVICE_NAME}' on network")
while True:
if count_camera_threads() > 3:
device.on()
else:
device.off()
time.sleep(1)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1421 次 |
| 最近记录: |