Por que dois programas não podem acessar minha webcam simultaneamente?

3

Primeiro, inicio cheese e minha webcam é ativada. Eu então corro vlc para pegar a saída de /dev/video0 , mas ele falha com:

[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

Qualquer que seja o par de programas de vídeo que eu execute (skype, cheese, vlc, etc.), o resultado é sempre o mesmo: o segundo programa não pode mais usar a webcam quando o primeiro já pegou a saída.

No entanto, acho curioso que os estados do video4linux :

In general, V4L2 devices can be opened more than once. When this is supported by the driver, users can for example start a "panel" application to change controls like brightness or audio volume, while another application captures video and audio.

Minha webcam é vista em lspci as 058f:a014 Alcor Micro Corp. Asus Integrated Webcam , mas eu nem sei qual é o driver subjacente, por isso não posso verificar se o meu problema está relacionado ao driver ou não. Qualquer entrada seria mais do que bem vinda!

    
por qdii 15.07.2012 / 20:16

1 resposta

4

Isso é o mesmo no Windows e talvez em todos os sistemas operacionais. A webcam não é um simples dispositivo de entrada: para ler quadros, você precisa enviar comandos ativamente de acordo com algum protocolo. Isso torna stateful e, como tal, o aplicativo que gerencia seu estado deve ter acesso exclusivo a ele.

No Windows, você pode usar a splitcam para duplicar o feed. No Linux, você pode usar o WebcamStudio.

    
por 15.07.2012 / 21:21