web-dev-qa-db-ja.com

2つのプログラムが同時にウェブカメラにアクセスできないのはなぜですか?

最初にcheeseを起動すると、Webカメラがオンになります。次に、vlcを実行して/dev/video0の出力を取得しますが、次のように失敗します。

[0x7f3ea40012e8] v4l2 demux error: cannot set input 0: Device or resource busy
[0x7f3ea40012e8] v4l2 demux error: cannot set input 0: Device or resource busy
[0x7f3ea4002168] v4l2 access error: cannot set input 0: Device or resource busy
[0x7f3ea4002168] v4l2 access error: cannot set input 0: Device or resource busy
[0x7f3eb4000b78] main input error: open of `v4l2:///dev/video0' failed

私が実行するビデオプログラムのペア(skype、cheese、vlcなど)が何であれ、結果は常に同じです。最初のプログラムがすでに出力を取得している場合、2番目のプログラムはWebカメラを使用できなくなります。

しかし、私はそれが video4linuxの状態

一般に、V4L2デバイスは複数回開くことができます。これがドライバーによってサポートされている場合、ユーザーはたとえば「パネル」アプリケーションを起動して明るさや音量などのコントロールを変更し、別のアプリケーションでビデオとオーディオをキャプチャできます。

私のウェブカメラはlspci058f:a014 Alcor Micro Corp. Asus Integrated Webcamとして表示されますが、基になるドライバーが何であるかさえわからないため、問題がドライバーに関連しているかどうかを確認できません。どんな入力でも大歓迎です!

3
qdii

これは、Windowsおよびおそらくすべてのオペレーティングシステムで同じです。ウェブカメラは単純な入力デバイスではありません。ウェブカメラからフレームを読み取るには、何らかのプロトコルに従ってコマンドをアクティブに送信する必要があります。これによりステートフルになり、そのため、その状態を管理するアプリケーションはそれに排他的にアクセスできる必要があります。

Windowsでは、splitcamを使用してフィードを複製できます。 Linuxでは、WebcamStudioを使用できます。

4
billc.cn