Làm cách nào để biết quy trình nào đang sử dụng webcam V4L2 của tôi?


14

Tôi đã cố chạy như sau:

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

Vì vậy, tôi giả sử rằng có một chương trình hiện đang truy cập webcam của tôi, nó rất cồng kềnh vì đèn của nó bị tắt và lsof | grep /dev/videokhông trả về gì cả. Có cách nào khác, thích hợp để kiểm tra các quy trình hiện đang sử dụng webcam của tôi không? Hay là vấn đề có bản chất hoàn toàn khác?


nó là một web cam thứ hai trên cùng một bộ điều khiển USB?
Dee

hữu ích sẽ là nếu bạn mô tả loại máy ảnh của bạn, distro linux, v.v. Có lẽ debianic dmesg | grep -i 'warn|fail|error|usb|video'có thể cung cấp cho bạn một số keo
Dee

Đó là một BisonCam theo như lsusbcó liên quan, sử dụng mô-đun video usb. Tôi đang chạy Gentoo. Tôi sẽ đăng thêm thông tin khi xảy ra lỗi vào lần tới, nhưng thực ra tôi chỉ quan tâm đến cách tìm ra quy trình nào đang sử dụng cam.
Turion

Câu trả lời:


21

Tôi đã có cùng một vấn đề và giải pháp tại http://www.theoutpost.org/8-nslu2/open-devvideo0-device-or-resource-busy/ (EDIT: url được cập nhật) đã giúp tôi.

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

4
Tôi không nhận được bất cứ điều gì fuser /dev/video0nhưng tôi vẫn nhận được /dev/video0: Device or resource busy.
panzi

Tôi đã cập nhật URL (tác giả blog đã di chuyển nó) - có lẽ bạn có thể xem liệu bài đăng đó có giúp bạn không. Mặt khác, nó có thể là quá trình chiếm giữ thiết bị không liên tục để khi bộ nhiệt áp kiểm tra nó đã được phát hành chưa? Bạn có thể đặt fuser trong một vòng lặp nền và thử tạo lại lỗi không?
Tsan-Kuang Lee

Sau khi khởi động lại, lỗi đã biến mất. Đừng muốn buộc lỗi một lần nữa. Tất cả các ứng dụng GUI không thể ghi lại âm thanh và / hoặc video theo một hoặc cách khác (treo, sập, hình ảnh đen, không có âm thanh hoặc chặn / dev / video0) vì vậy bây giờ tôi sử dụng ffmpeg trên trình bao. UX khủng khiếp nhưng ít nhất nó hoạt động.
panzi

2
Câu hỏi cũ nhưng vì tôi phải mất 2h ... hãy nhớ thử sudo fuser /dev/video0trong trường hợp lệnh không có sudo không hiển thị kết quả.
dùng3191334

2

Vì một số lý do / dev / video * từ câu trả lời của Tsan-Kuang không phù hợp với tôi. Đây là một cách khác để bạn có thể tiếp cận thiết bị của mình : ls /dev/input/by-id/. Ví dụ:

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


1

Lệnh này sẽ trả về tất cả các quy trình đang sử dụng thiết bị:

$ 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

Có PID bạn có thể giết quá trình, trong mẫu này:

$ kill 31526

lsof / dev / video0 không cung cấp cho tôi bất kỳ đầu ra nào
Max N
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.