V4L2 web kameramı hangi işlemin kullandığını nasıl öğrenebilirim?


14

Aşağıdakileri çalıştırmayı denedim:

$ vlc -I dummy v4l2:///dev/video0 --video-filter scene --no-audio --scene-path webcam.png --scene-prefix image_prefix --scene-format png vlc://quit --run-time=1                                                     
VLC media player 2.0.7 Twoflower (revision 2.0.6-54-g7dd7e4d)                                                                                                                                                                                                             
[0x1f4a1c8] dummy interface: using the dummy interface module...                                                                                                                                                                                                          
[0x7fc19c001238] v4l2 demux error: VIDIOC_STREAMON failed                                                                                                                                                                                                                 
libv4l2: error setting pixformat: Device or resource busy                                                                                                                                                                                                                 
libv4l2: error setting pixformat: Device or resource busy                                                                                                                                                                                                                 
libv4l2: error setting pixformat: Device or resource busy                                                                                                                                                                                                                 
libv4l2: error setting pixformat: Device or resource busy                                                                                                                                                                                                                 
libv4l2: error setting pixformat: Device or resource busy                                                                                                                                                                                                                 
libv4l2: error setting pixformat: Device or resource busy                                                                                                                                                                                                                 
libv4l2: error setting pixformat: Device or resource busy                                                                                                                                                                                                                 
libv4l2: error setting pixformat: Device or resource busy                                                                                                                                                                                                                 
libv4l2: error setting pixformat: Device or resource busy                                                                                                                                                                                                                 
libv4l2: error setting pixformat: Device or resource busy                                                                                                                                                                                                                 
[0x7fc19c007f18] v4l2 access error: cannot set input 0: Device or resource busy                                                                                                                                                                                           
[0x7fc19c007f18] v4l2 access error: cannot set input 0: Device or resource busy                                                                                                                                                                                           
[0x7fc1a4000b28] main input error: open of `v4l2:///dev/video0' failed                                                                                                                                                                                                    
[0x7fc1a4000b28] main input error: Your input can't be opened                                                                                                                                                                                                             
[0x7fc1a4000b28] main input error: VLC is unable to open the MRL 'v4l2:///dev/video0'. Check the log for details.                                                                                                                                                         
[0x7fc19c007cc8] idummy demux: command `quit'    

Bu yüzden şu anda web kamerama erişen ve ışığı kapalı olduğu ve lsof | grep /dev/videohiçbir şey döndürmediği için hantal bir program olduğunu varsayıyorum . Şu anda web kameramı hangi işlemlerin kullandığını kontrol etmenin başka bir uygun yolu var mı? Yoksa sorun tamamen farklı bir doğa mıdır?


aynı USB denetleyicisindeki ikinci bir web kamerası mı?
Dee

Eğer kamera türü, linux dağıtım vb açıklamak yararlı olacaktır. Belki debianic dmesg | grep -i 'warn|fail|error|usb|video'size biraz tutkal verebilir
Dee

lsusbUsb video modülünü kullanan bir BisonCam . Gentoo kullanıyorum. Hata bir dahaki sefere meydana geldiğinde daha fazla bilgi gönderirim, ancak aslında sadece hangi işlemlerin kamerayı kullandığını bulmakla ilgileniyorum.
Turion

Yanıtlar:


22

Aynı sorunu yaşıyordum ve http://www.theoutpost.org/8-nslu2/open-devvideo0-device-or-resource-busy/ (EDIT: url güncellendi) adresindeki çözüm bana yardımcı oldu.

$ fuser /dev/video0
/dev/video0: 1871m
$ ps axl | grep 1871
$ kill -9 1871

4
Ben bir şey almıyorum fuser /dev/video0ama hala alıyorum /dev/video0: Device or resource busy.
panzi

URL'yi güncelledim (blog yazarı onu taşıdı) - belki de bu yayının size yardımcı olup olmadığını görebilirsiniz. Aksi takdirde, cihazı sürekli olmayan bir şekilde işgal eden süreç olabilir, bu yüzden kaynaştırıcı kontrol edildiğinde zaten serbest bırakılır mı? Kaynaştırıcıyı bir arka plan döngüsüne koyabilir ve hatayı yeniden oluşturmaya çalışabilir misiniz?
Tsan-Kuang Lee

Yeniden başlatmanın ardından hata giderildi. Hatayı bir daha zorlamak istemiyorum. Tüm GUI uygulamaları bir veya başka bir şekilde ses ve / veya video kaydedemedi (askıda kal, çök, siyah görüntü, ses yok veya engelleme / dev / video0), bu yüzden şimdi kabukta ffmpeg kullanıyorum. Korkunç UX ama en azından işe yarıyor.
panzi

2
Eski soru ama beni 2 saat sürdüğü için ... sudo fuser /dev/video0sudo olmadan komutun bir sonuç göstermemesi durumunda denemeyi unutmayın .
user3191334

2

Nedense Tsan-Kuang'ın cevabından / dev / video * benim için çalışmadı. Burada cihazınızı ulaşabilir başka bir yolu: ls /dev/input/by-id/. Örneğin:

$ fuser /dev/input/by-id/usb-Microsoft_Microsoft®_LifeCam_HD-5000-event-if00


1

Bu komut, aygıtı kullanan tüm işlemleri döndürür:

$ lsof /dev/video0
COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF  NODE NAME
cheese  31526 kirill  mem    CHR   81,0          18321 /dev/video0
cheese  31526 kirill   23u   CHR   81,0      0t0 18321 /dev/video0

PID'ye sahipseniz, bu örnekte işlemi öldürebilirsiniz:

$ kill 31526

lsof / dev / video0 bana herhangi bir çıktı vermiyor
Max N
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.