Recentemente, observei que o vídeo da minha webcam nem sempre funciona em um programa, desde que algo mais esteja sendo acessado.
Vamos explicar isso com alguns exemplos de uso:
Estou executando o uTox (um tox cliente de mensagens instantâneas) em segundo plano para que eu possa receber mensagens seguras de amigos e clientes e, de repente, recebo uma chamada do Skype. O Skype não pode acessar a webcam porque o uTox tem controle sobre o dispositivo.
O uTox está funcionando e quero verificar a saída de vídeo da minha webcam usando o Cheese. Eu recebo um erro: There was an error playing video from the webcam
e não recebo saída de vídeo.
Em ambos os casos, o uTox não aciona a luz da webcam no meu laptop, e não deve estar usando ativamente a webcam (ela apenas segura o dispositivo por qualquer motivo). Para contornar isso, gostaria de saber se há algo que eu possa fazer para permitir que vários programas acessem a câmera ao mesmo tempo (ou para qualquer pessoa familiarizada com o cliente, como remover a retenção do vídeo da uTox?), como eu geralmente preciso ter o uTox rodando em segundo plano. Matar o processo para que eu possa fazer uma chamada pelo Skype é muito inconveniente.
Existe qualquer maneira de permitir que vários programas acessem o mesmo dispositivo de vídeo ao mesmo tempo?
Erro ao executar o Cheese:
$ cheese &
...
libv4l2: error setting pixformat: Device or resource busy
libv4l2: error setting pixformat: Device or resource busy
(cheese:8259): cheese-WARNING **: Device '/dev/video0' is busy: gstv4l2object.c(2838): gst_v4l2_object_set_format (): /GstCameraBin:camerabin/GstWrapperCameraBinSrc:camera_source/GstBin:bin18/GstV4l2Src:video_source:
Call to S_FMT failed for YU12 @ 1280x720: Device or resource busy
Informações do sistema:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 15.04
Release: 15.04
Codename: vivid
# lshw -short
H/W path Device Class Description
======================================================
system Computer
/0 bus Motherboard
/0/0 memory 7873MiB System memory
/0/1 processor Intel(R) Core(TM) i5-3337U CPU @ 1.80GHz
/0/100 bridge 3rd Gen Core processor DRAM Controller
/0/100/2 display 3rd Gen Core processor Graphics Controller
/0/100/14 bus 7 Series/C210 Series Chipset Family USB xHCI Host Controller
/0/100/14/0 usb2 bus xHCI Host Controller
/0/100/14/1 usb1 bus xHCI Host Controller
/0/100/16 communication 7 Series/C210 Series Chipset Family MEI Controller #1
/0/100/1a bus 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2
/0/100/1a/1 usb3 bus EHCI Host Controller
/0/100/1a/1/1 bus Integrated Rate Matching Hub
/0/100/1a/1/1/1 communication Bluetooth wireless interface
/0/100/1a/1/1/3 multimedia HD WebCam
/0/100/1b multimedia 7 Series/C210 Series Chipset Family High Definition Audio Controller
/0/100/1c bridge 7 Series/C210 Series Chipset Family PCI Express Root Port 1
/0/100/1c/0 eth0 network NetXtreme BCM57786 Gigabit Ethernet PCIe
/0/100/1c/0.1 generic BCM57765/57785 SDXC/MMC Card Reader
/0/100/1c.1 bridge 7 Series/C210 Series Chipset Family PCI Express Root Port 2
/0/100/1c.1/0 wlan0 network QCA9565 / AR9565 Wireless Network Adapter
/0/100/1d bus 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1
/0/100/1d/1 usb4 bus EHCI Host Controller
/0/100/1d/1/1 bus Integrated Rate Matching Hub
/0/100/1f bridge HM77 Express Chipset LPC Controller
/0/100/1f.2 storage 7 Series Chipset Family 6-port SATA Controller [AHCI mode]
/0/100/1f.3 bus 7 Series/C210 Series Chipset Family SMBus Controller
...
Observe que o dispositivo de vídeo em questão aqui é a "Webcam HD" referida por lshw
, localizada em /dev/video0