![생산자는 소비자가 연결되어 있는지 어떻게 감지합니까?](https://linux55.com/image/187676/%EC%83%9D%EC%82%B0%EC%9E%90%EB%8A%94%20%EC%86%8C%EB%B9%84%EC%9E%90%EA%B0%80%20%EC%97%B0%EA%B2%B0%EB%90%98%EC%96%B4%20%EC%9E%88%EB%8A%94%EC%A7%80%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EA%B0%90%EC%A7%80%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
저는 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 이벤트를 받게 됩니다.