Có thể cho hai quá trình truy cập webcam cùng một lúc?


14

Tôi muốn thử sử dụng Cheese trong Google+ Hangouts và các cấu hình tương tự và tôi muốn biết liệu webcam có thể được sử dụng bởi hai quy trình để có quyền truy cập vào webcam cùng một lúc không. Tôi chưa thử nó, nhưng trước khi tôi làm, tôi đoán tôi sẽ hỏi.

Vì vậy, nó có thể?

Câu trả lời:


6

Vâng, tôi vừa thử. Kết quả thú vị.

Tôi đã có skype và pho mát và đồ chơi webcam và hangout (tất cả đều hoạt động) và thử chúng cùng nhau.

Các kết quả:

Bạn không thể sử dụng cùng một webcam trên 2 thứ cùng một lúc.

Phô mai (Hoạt động) + Đồ chơi webcam (Không hoạt động) + Skype (Nhỏ, trên cùng bên phải. Không hoạt động).

nhập mô tả hình ảnh ở đây

Bạn có thể sử dụng 2 webcam trên 2 thứ. (Phô mai + Đồ chơi webcam).

nhập mô tả hình ảnh ở đây

Hangouts (Không hoạt động) + Pho mát (Đang hoạt động)

nhập mô tả hình ảnh ở đây

Hangouts (Hoạt động theo cách riêng của nó).

nhập mô tả hình ảnh ở đây

Pho mát vỡ khi tôi mở Hangouts đầu tiên. Nó cũng làm như vậy với những người khác, nhưng internet của tôi quá chậm để tải lên từng ảnh chụp màn hình (và tôi nghi ngờ bạn sẽ đánh giá cao hơn 30 ảnh chụp màn hình) ...

nhập mô tả hình ảnh ở đây

Tôi thậm chí đã thử tạo một liên kết tượng trưng đến /dev/video0và lưu nó vào /devnhư video2. Điều đó đã không làm việc.

Tôi cũng không thể chạy 2 quy trình phô mai cùng một lúc.

Nếu bạn phải, tôi sẽ khuyên bạn nên làm cho nó toàn màn hình và thực hiện 2 lần ghi màn hình. Tôi nghi ngờ rằng sẽ làm việc cho những gì bạn muốn mặc dù.


Cảm ơn! Điều này súc tích và cho tôi biết những gì tôi cần biết. Đẹp btw vườn! Tiền thưởng sẽ được trao khi hết thời gian (21 giờ để đi). Sau đó tôi sẽ xóa bình luận này.
RolandiXor

@Mew Đó là nỗ lực cuối cùng của tôi để khiến nó hoạt động :)
Tim

@Tim Câu trả lời tiếp theo chính xác là những gì bạn đang tìm kiếm nếu bạn đến đây vì bạn cần một cách để làm điều đó.
Isiah Meadows

1
@impinball không, chỉ cần tìm một câu hỏi thú vị!
Tim

14

Hạnh phúc, bây giờ, CÓ!

Hiện tại có một dự án trên GitHub có thể hiển thị không chỉ hai mà cả số lượng thiết bị video vô hạn (chỉ giới hạn bởi dung lượng hệ thống) từ một nguồn duy nhất.

Dự án được gọi là v4l2loopback. (Kiểm tra liên kết và cuộn xuống để xem README để được hướng dẫn.)

Bạn có thể cài đặt v4l2loopbackbằng cách nhân bản GitHub của nó và chạy các lệnh sau:

$ git clone https://github.com/umlaeute/v4l2loopback.git
$ cd v4l2loopback
$ make
$ sudo make install

Ví dụ

Đối với các mẫu về cách sử dụng nó với GStreamer, FFmpeg, MPlayer và Skype, hãy kiểm tra wiki nhỏ của họ . Hy vọng bạn có thể tìm thấy các cài đặt phù hợp với nhu cầu của bạn.

Thưởng thức tinh chỉnh xung quanh!


1
Thiết bị ảo là một trong những lĩnh vực mà Linux (và * nix, cho vấn đề đó) tỏa sáng. Windows thậm chí còn phức tạp hơn khi viết một teetiện ích cơ bản không chờ đợi stdinđể hoàn thành việc cho nó ăn. Tôi sẽ không ngạc nhiên nếu điều này thực sự sử dụng nhị phân tương đương teevới sự hỗ trợ có thể mở rộng hơn dưới mui xe.
Isiah Meadows

Trong khi điều này trả lời câu hỏi, tốt hơn là nên bao gồm các phần của liên kết ở đây và cung cấp liên kết để tham khảo, để chúng tôi có một số ví dụ - ví dụ: tạo 2 thiết bị từ 1. Các tùy chọn cho điều đó là gì? Và có thể (như đã nói trong các yêu cầu của OP) để sử dụng với Google hangouts không? Tôi cũng vừa thử nghiệm nó với Skype và nó dường như không hoạt động. Chúng tôi hiện là phiên bản 4.3 chứ không phải 4.0 ...
Tim

2
Tôi sẽ phải kiểm tra điều này khi hệ thống khác của tôi hoạt động trở lại. Có lẽ tôi sẽ cho một tiền thưởng bổ sung.
RolandiXor

3
Đây thực sự là một phần của Ubuntu - không cần git.
nbubis

Thật vậy, cái này hiện được đóng gói cho Ubuntu / Debian dưới dạng v4l2loopback-utils Không cần phải tự biên dịch cái này
Arnaud Jeansen

3

Dựa trên câu trả lời @The Eye

Lần đầu tiên tôi đã cài đặt các gói guxer trên Ubuntu 18.04 https://gstreamer.freedesktop.org/documentation/installing/on-linux.html

$ git clone https://github.com/umlaeute/v4l2loopback.git
$ cd v4l2loopback
$ make
$ sudo make install

Tôi đã nhận được thông báo cảnh báo như ở đây trên Ubuntu 18.04 LTS https://github.com/umlaeute/v4l2loopback/issues/139 (nhưng nó không ngăn tôi tải trình điều khiển v4l2loopback)

$ sudo depmod -a

Tôi chỉ có 1 webcam trên laptop / dev / video0 và tôi muốn nhận 2 luồng từ cùng một phần cứng. Dựa trên https://github.com/umlaeute/v4l2loopback/blob/master/README.md

$ modprobe v4l2loopback devices=2

Bây giờ nên có /dev/video1/dev/video2được tạo ra giả sử /dev/video0là thiết bị video duy nhất.

Bây giờ tôi chạy như sau trong một cửa sổ đầu cuối

gst-launch-1.0 v4l2src device=/dev/video0 ! tee name=t ! queue ! v4l2sink device=/dev/video1 t. ! queue ! v4l2sink device=/dev/video2

Tôi mở thêm 2 tab

Trong tab đầu tiên

gst-launch-1.0 v4l2src device=/dev/video1 ! videoconvert ! ximagesink

Trong tab thứ hai

gst-launch-1.0 v4l2src device=/dev/video2 ! videoconvert ! ximagesink

Bây giờ người ta sẽ thấy 2 luồng video

CẬP NHẬT

Ngay cả khi tôi sử dụng cùng một /dev/video1thiết bị nhiều lần, tất cả đều mang lại cho tôi nhiều luồng. thí dụ.

Trong tab đầu tiên

gst-launch-1.0 v4l2src device=/dev/video1 ! videoconvert ! ximagesink

Trong tab thứ hai

gst-launch-1.0 v4l2src device=/dev/video1 ! videoconvert ! ximagesink

Trong tab thứ ba

gst-launch-1.0 v4l2src device=/dev/video1 ! videoconvert ! ximagesink

cho tôi ba luồng.


BTW nếu webcam của một người có âm thanh thì lọc các thiết bị âm thanh bằng cách sử dụng lệnh pactl list | grep -A2 'Source #'sau đó sử dụng thiết bị đó trong đường ống sau (cũng có thể chạy nhiều phiên bản của đường ống)gst-launch-1.0 pulsesrc device=alsa_input.<name of device> ! autoaudiosink
nhiệt tình

Điều này hoạt động tốt hơn nhiều so với giải pháp FFmpeg vì tôi không thể yêu cầu FFmpeg sao chép h264 mà không giải mã được, điều này dẫn đến việc nó luôn sử dụng CPU ngay cả khi không có ai nghe
Fabian N.

2

Câu trả lời là không với có lẽ ... Thư viện, "Video 4 Linux" phát hiện xem một thiết bị có đang được sử dụng hay không và sẽ không bắt đầu. Tuy nhiên; nếu bạn muốn tải libv4l-dev và chỉnh sửa thủ công, bạn có thể chỉnh sửa mã để thoát khỏi kiểm tra này và sau đó chỉ cần biên dịch lại. Tôi tưởng tượng bạn có thể làm điều này để làm việc, nhưng nó sẽ cực kỳ không ổn định. Có thể đáng để kiểm tra mặc dù.

TLDR: Bất cứ điều gì cũng có thể nếu bạn là một lập trình viên với một số mỡ khuỷu tay tiện dụng. Đừng muốn đi quá xa? Sau đó thì không; Điều đó là không thể.

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.