生産者は、消費者が接続されているかどうかをどのように検出しますか?

生産者は、消費者が接続されているかどうかをどのように検出しますか?

私は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イベントが送られます。

関連情報