生产者如何检测消费者是否已连接?

生产者如何检测消费者是否已连接?

我正在使用 v4l2loopback 加上我编写的一个程序来生成虚拟摄像机流。现在,我在需要时手动启动和停止程序。我宁愿让它始终作为守护进程运行,并且仅在有消费者连接到设备时才产生输出。

v4l2loopback 生产者有没有办法检测消费者是否已连接?看起来总是poll返回准备写入,我没有看到为此的 ioctl,或者缓冲区标志或其他行为的变化。

有什么想法吗?

答案1

我继续寻找,发现了一个讨论此问题的线程:https://github.com/umlaeute/v4l2loopback/issues/109

看起来 v4l2loopback 中没有内置任何东西,但是一条评论确实建议使用inotify。 inotify 不是最强大的解决方案,但它确实有用。

答案2

最新的 v4l2loopback 支持 VIDIOC_SUBSCRIBE_EVENT 当客户端连接时,您将收到 V4L2_EVENT_PRI_CLIENT_USAGE 事件。

相关内容