是否有 API 来检查 Mac 的麦克风或摄像机是否正在使用中?

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)