Bagaimana cara mengetahui proses mana yang menggunakan webcam V4L2 saya?

14

Saya mencoba menjalankan yang berikut:

$ 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'    

Jadi saya berasumsi bahwa ada program saat ini mengakses webcam saya, yang rumit karena cahayanya mati dan lsof | grep /dev/videotidak mengembalikan apa-apa. Apakah ada cara lain yang tepat untuk memeriksa proses apa yang saat ini menggunakan webcam saya? Atau apakah masalah yang sifatnya sama sekali berbeda?

Turion
sumber
itu adalah web cam kedua pada pengontrol USB yang sama?
Dee
akan membantu jika Anda menggambarkan jenis kamera Anda, distro linux dll. Mungkin debianic dmesg | grep -i 'warn|fail|error|usb|video'dapat memberi Anda beberapa lem
Dee
Sejauh ini BisonCam lsusbmenggunakan modul video usb. Saya menjalankan Gentoo. Saya akan memposting lebih banyak info ketika kesalahan terjadi di lain waktu, tetapi sebenarnya saya hanya tertarik pada bagaimana mengetahui proses mana yang menggunakan cam.
Turion

Jawaban:

21

Saya mengalami masalah yang sama dan solusinya di http://www.theoutpost.org/8-nslu2/open-devvideo0-device-or-resource-busy/ (EDIT: url updated) membantu saya.

$ fuser /dev/video0
/dev/video0: 1871m
$ ps axl | grep 1871
$ kill -9 1871
Tsan-Kuang Lee
sumber
4
Saya tidak mendapatkan apa-apa untuk fuser /dev/video0tetapi saya masih mendapatkan /dev/video0: Device or resource busy.
panzi
Saya memperbarui URL (penulis blog memindahkannya) - mungkin Anda dapat melihat apakah posting itu membantu Anda. Jika tidak, mungkinkah proses tersebut menempati perangkat secara non-kontinu sehingga ketika fuser mengecek itu sudah dirilis? Bisakah Anda meletakkan fuser di loop latar belakang dan mencoba untuk menghasilkan kembali kesalahan?
Tsan-Kuang Lee
Setelah reboot kesalahan itu hilang. Tidak ingin memaksakan kesalahan lagi. Semua aplikasi GUI gagal merekam audio dan / atau video dalam satu atau cara lain (hang, crash, gambar hitam, tidak ada audio, atau memblokir / dev / video0) jadi saya sekarang menggunakan ffmpeg pada shell. UX yang mengerikan tapi setidaknya berhasil.
panzi
2
Pertanyaan lama tapi karena saya butuh 2 jam ... perlu diingat untuk mencoba sudo fuser /dev/video0jika perintah tanpa sudo tidak menunjukkan hasil.
user3191334
2

Untuk beberapa alasan / dev / video * dari jawaban Tsan-Kuang tidak berhasil untuk saya. Berikut adalah cara lain Anda bisa mencapai perangkat Anda: ls /dev/input/by-id/. Sebagai contoh:

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

Sergey Romanovsky
sumber
1

Perintah ini akan mengembalikan semua proses yang menggunakan perangkat:

$ 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

Memiliki PID Anda dapat mematikan prosesnya, dalam sampel ini:

$ kill 31526
Kirill Feoktistov
sumber
lsof / dev / video0 tidak memberi saya output apa pun
Maks N