เป็นไปได้หรือไม่ที่กระบวนการสองกระบวนการเข้าถึงเว็บแคมในเวลาเดียวกันได้หรือไม่?


14

ฉันต้องการลองใช้ชีสใน Google+ แฮงเอาท์และการกำหนดค่าที่คล้ายกันและฉันต้องการทราบว่าเป็นไปได้หรือไม่ที่เว็บแคมจะใช้สองกระบวนการเพื่อเข้าถึงเว็บแคมในเวลาเดียวกัน ฉันยังไม่ได้ลองเลย แต่ก่อนหน้านี้ฉันคิดว่าฉันจะถาม

เป็นไปได้ไหม

คำตอบ:


6

ฉันก็แค่พยายาม ผลลัพธ์ที่น่าสนใจ

ฉันมีสไกป์และชีสและของเล่นเว็บแคมและแฮงเอาท์ (ซึ่งทั้งหมดทำงาน) และลองพวกเขาด้วยกัน

ผล:

คุณไม่สามารถใช้เว็บแคมเดียวกันกับ 2 สิ่งในคราวเดียว

ชีส (ใช้งานได้) + ของเล่นเว็บแคม (ไม่ทำงาน) + Skype (เล็ก, บนขวา, ไม่ทำงาน)

ป้อนคำอธิบายรูปภาพที่นี่

คุณสามารถใช้ 2 เว็บแคมกับ 2 อย่าง (ของเล่นชีสและเว็บแคม)

ป้อนคำอธิบายรูปภาพที่นี่

แฮงเอาท์ (ไม่ทำงาน) + ชีส (กำลังทำงาน)

ป้อนคำอธิบายรูปภาพที่นี่

แฮงเอาท์ (ทำงานด้วยตัวเอง)

ป้อนคำอธิบายรูปภาพที่นี่

ชีสแตกเมื่อฉันเปิดแฮงเอาท์ก่อน มันทำเช่นเดียวกันกับคนอื่น ๆ แต่อินเทอร์เน็ตของฉันช้าเกินกว่าที่จะอัปโหลดทุกภาพหน้าจอ (และฉันสงสัยว่าคุณจะพอใจกับภาพหน้าจอมากกว่า 30 ภาพ) ...

ป้อนคำอธิบายรูปภาพที่นี่

ผมก็พยายามทำให้การเชื่อมโยงสัญลักษณ์/dev/video0และบันทึกไว้ในฐานะ/dev video2นั่นไม่ได้ผล

ฉันไม่สามารถเรียกใช้กระบวนการชีส 2 รายการพร้อมกันได้

ถ้าคุณต้องฉันขอแนะนำให้ทำแบบเต็มหน้าจอและทำการบันทึก 2 หน้าจอ ฉันสงสัยว่ามันจะใช้ได้ผลกับสิ่งที่คุณต้องการ


ขอบคุณ! นี่กระชับและบอกสิ่งที่ฉันต้องรู้ btw สวนสวย! เงินรางวัลจะมอบให้เมื่อหมดเวลา (21 ชม. ไป) จากนั้นฉันจะลบความคิดเห็นนี้
RolandiXor

@Mew นั่นเป็นความพยายามครั้งสุดท้ายของฉันที่ทำให้มันทำงาน :)
ทิม

@Tim คำตอบต่อไปคือสิ่งที่คุณกำลังมองหาถ้าคุณมาที่นี่เพราะคุณต้องการวิธีในการทำเช่นนั้น
Isiah Meadows

1
@impinball ไม่เพียงแค่พบว่ามันเป็นคำถามที่น่าสนใจ!
ทิม

14

อย่างมีความสุขตอนนี้ใช่!

ขณะนี้มีโครงการบน GitHub ที่สามารถแสดงได้ไม่เพียงสองเท่านั้น แต่มีจำนวนไม่ จำกัด (จำกัด โดยความจุของระบบ) ของอุปกรณ์วิดีโอจากแหล่งเดียว

v4l2loopbackโครงการที่เรียกว่า (ตรวจสอบลิงค์และเลื่อนลงเพื่อดู README สำหรับคำแนะนำ)

คุณสามารถติดตั้งv4l2loopbackโดยการโคลน GitHub และรันคำสั่งเหล่านี้:

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

ตัวอย่าง

สำหรับตัวอย่างเกี่ยวกับวิธีการที่จะใช้กับ GStreamer, FFmpeg, MPlayer, และ Skype ตรวจสอบขนาดเล็กของพวกเขาวิกิพีเดีย หวังว่าคุณจะพบการตั้งค่าที่เหมาะสมกับความต้องการของคุณ

เพลิดเพลินไปกับการปรับแต่ง!


1
อุปกรณ์เสมือนเป็นหนึ่งในพื้นที่ที่ Linux (และ * ระวังสำหรับเรื่องนั้น) ส่องสว่าง มันซับซ้อนกว่าบน Windows แม้แต่เขียนteeยูทิลิตี้พื้นฐานที่ไม่ต้องรอstdinให้อาหารเสร็จ ฉันจะไม่แปลกใจถ้าสิ่งนี้ใช้ไบนารีที่เทียบเท่าteeกับการรองรับที่ปรับขยายได้มากกว่าภายใต้ประทุน
Isiah Meadows

แม้ว่าสิ่งนี้จะตอบคำถามได้ แต่ก็ควรรวมส่วนต่าง ๆ ของลิงก์ไว้ที่นี่และจัดเตรียมลิงก์สำหรับการอ้างอิงเพื่อให้เรามีตัวอย่าง - เช่นสร้างอุปกรณ์ 2 เครื่องจาก 1 ตัวเลือกสำหรับสิ่งนั้นคืออะไร และเป็นไปได้ (ดังที่ได้กล่าวไว้ในข้อกำหนดของ OP) เพื่อใช้กับ Google Hangouts หรือไม่? ฉันเพิ่งทดสอบกับ Skype และดูเหมือนจะไม่ทำงาน ตอนนี้เราเป็นเวอร์ชั่น 4.3 ไม่ใช่ 4.0 ...
ทิม

2
ฉันจะต้องตรวจสอบสิ่งนี้เมื่อระบบอื่นของฉันกลับมา ฉันจะให้รางวัลเพิ่มเติม
RolandiXor

3
ตอนนี้เป็นส่วนหนึ่งของอูบุนตูแล้ว - ไม่จำเป็นต้องมีคอมไพล์
nbubis

อันที่จริงตอนนี้ได้รับการบรรจุสำหรับ Ubuntu / Debian ในฐานะ v4l2loopback-utils ไม่จำเป็นต้องคอมไพล์ตัวเอง
Arnaud Jeansen

3

ตามคำตอบ @The Eye

ฉันติดตั้งแพ็คเกจ gstreamer เป็นครั้งแรกบน 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

ฉันได้รับข้อความเตือนเช่นเดียวกับที่นี่บน Ubuntu 18.04 LTS https://github.com/umlaeute/v4l2loopback/issues/139 (แต่มันไม่ได้ป้องกันไม่ให้ฉันโหลดไดรเวอร์ v4l2loopback)

$ sudo depmod -a

ฉันเพิ่งมีเว็บแคม 1 เครื่องบนแล็ปท็อป / dev / video0 และฉันต้องการรับสตรีม 2 รายการจากฮาร์ดแวร์เดียวกัน อ้างอิงจากhttps://github.com/umlaeute/v4l2loopback/blob/master/README.md

$ modprobe v4l2loopback devices=2

ตอนนี้ควรมี/dev/video1และ/dev/video2สร้างสมมติว่า/dev/video0เป็นอุปกรณ์วิดีโอเท่านั้น

ตอนนี้ฉันรันสิ่งต่อไปนี้ในหน้าต่างเทอร์มินัลเดียว

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

ฉันเปิดอีก 2 แท็บ

ในแท็บแรก

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

ในแท็บที่สอง

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

ตอนนี้เราควรเห็นสตรีมวิดีโอ 2 รายการ

UPDATE

แม้ว่าฉันจะใช้/dev/video1อุปกรณ์เดียวกันหลาย ๆ ครั้งมันก็ให้กระแสนั้นมากมาย ตัวอย่าง.

ในแท็บแรก

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

ในแท็บที่สอง

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

ในแท็บที่สาม

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

ให้สามกระแส


BTW หากเว็บแคมของคุณมีระบบเสียงแล้วให้กรองอุปกรณ์เสียงโดยใช้คำสั่งpactl list | grep -A2 'Source #'จากนั้นใช้อุปกรณ์ดังกล่าวในขั้นตอนต่อไปนี้ (สามารถเรียกใช้งานท่อได้หลายอินสแตนซ์)gst-launch-1.0 pulsesrc device=alsa_input.<name of device> ! autoaudiosink
enthusiasticgeek

วิธีนี้ใช้งานได้ดีกว่าโซลูชัน FFmpeg เนื่องจากฉันไม่สามารถดึง FFmpeg เพื่อคัดลอก h264 ได้โดยไม่ต้องถอดรหัสซึ่งทำให้ใช้ CPU เสมอแม้ว่าจะไม่มีใครฟัง
Fabian N.

2

คำตอบคืออาจจะมี ... ห้องสมุด "Video 4 Linux" ตรวจพบว่ามีการใช้อุปกรณ์หรือไม่และจะไม่เริ่มต้น อย่างไรก็ตาม; หากคุณต้องการดาวน์โหลด libv4l-dev และแก้ไขด้วยตนเองคุณสามารถแก้ไขรหัสเพื่อกำจัดการตรวจสอบนี้จากนั้นเพียงแค่คอมไพล์ใหม่ ฉันคิดว่าคุณสามารถทำให้มันใช้งานได้ แต่มันจะไม่เสถียรอย่างยิ่ง อาจจะคุ้มค่าการตรวจสอบว่า

TLDR: ทุกอย่างเป็นไปได้ถ้าคุณเป็นโปรแกรมเมอร์ที่มีจาระบีที่ข้อศอกบาง ไม่ต้องการที่จะไปไกลขนาดนั้น? ถ้าอย่างนั้นไม่; มันเป็นไปไม่ได้.

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.