ฉันสามารถไปป์ / dev / วิดีโอผ่าน ssh ได้ไหม


26

ฉันมีคอมพิวเตอร์สองเครื่องเดสก์ทอปในสำนักงานของฉัน (มีเว็บแคมติดอยู่) และแล็ปท็อปที่อื่นในเครือข่าย

ฉันมักจะดูที่สำนักงานของฉันผ่านเว็บแคมของฉันโดยใช้

ssh Office -Y "mplayer tv://device=/dev/video0"

จากแล็ปท็อปของฉัน ฉันไม่ชอบ Xforwarding mplayer ดังนั้นเหตุใดฉันจึงไม่สามารถเจาะอุโมงค์/dev/videoไปยังพีซีของฉันได้ด้วยการใช้งานบนแล็ปท็อปของฉัน

sudo mkfifo /dev/video1
ssh Office 'dd if=/dev/video' | sudo dd of=/dev/video1'

แล้วดูเว็บแคม (บนแล็ปท็อปของฉัน)

mplayer tv://device=/dev/video1

คำตอบ:


14

สิ่งที่ต้องการ:

dd if=/dev/video0 | mplayer tv://device=/dev/stdin

ทำงานได้สำหรับฉัน (SOA # 1) ในพื้นที่ ดังนั้น:

ssh localhost dd if=/dev/video0 | mplayer tv://device=/dev/stdin

รวมไปถึง

mkfifo test
dd if=/dev/video0 of=test &
mplayer tv://device=test

ดังนั้น:

  1. ลองโดยไม่มีชื่อไปป์
  2. ตรวจสอบแบนด์วิดท์

นอกจากนี้ - วิธีใช้งานไม่ได้ (แสดงหน้าจอสีดำบ่นเกี่ยวกับอุปกรณ์ที่ไม่รู้จัก ฯลฯ )


ฉันคิดว่ามีบางอย่างผิดปกติกับ mplayer ของฉัน ถ้าฉันเรียกใช้dd if=/dev/video0 | mplayer tv://device=/dev/stdinจะบอกฉันว่าทรัพยากรไม่ว่าง มิฉะนั้นจะใช้งานได้ (ฉันดูวิดีโอ) แม้ในขณะที่ฉันวิ่งmplayer tv://device=/dev/null
Stefan

1
คำตอบนี้ค่อนข้างทำให้เข้าใจผิด การร้องขอ "ถูกต้อง" ของmplayerจะเป็นmplayer tv:// -tv device=/dev/stdinหรือคล้ายกัน แต่ไม่ทำงาน (อุปกรณ์ตัวอักษรมีความพิเศษมากกว่าddสามารถจัดการได้อย่างเหมาะสม) เมื่อคุณเรียกใช้mplayer tv://device=/dev/stdinจะไม่เห็นข้อมูลจำเพาะของอุปกรณ์และกลับไปที่/dev/video0โดยตรงทำให้ภาพลวงตาของ "ทำงาน" แต่มันจะไม่ทำงานเลยเมื่อเว็บแคมและmplayerกระบวนการแยกจากกันโดยเครือข่าย
Daniel Wagner

ใช่ดูเหมือนว่าใช้งานได้เพราะคุณกำลัง SSH กำลังไปยัง localhost แต่ในความเป็นจริงมันล้มเหลวและ mplayer กลับไปที่ / dev / video0 บน localhost หากคุณลองใช้คำสั่งเหล่านี้ SSHing ไปยังคอมพิวเตอร์เครื่องอื่น (เช่นไม่ใช่โฮสต์ในพื้นที่) คุณจะเห็นเว็บแคมในพื้นที่ไม่ใช่จากระยะไกล
Jason Antman

คุณลองใช้งานในโฮสต์ในพื้นที่ แต่จะเรียกใช้คำสั่งssh localhost dd if=/dev/video0 | mplayer tv://device=/dev/stdinเมื่อใช้คอมพิวเตอร์สองเครื่องได้อย่างไร
Francesco Boi

ทางเลือกของmplayer tv://device=/dev/stdinบน OSX คืออะไร?
Francesco Boi

14

หากคุณมีแบนด์วิดธ์ต่ำฉันแนะนำให้ทำการบีบอัดสตรีมวิดีโอ:

ssh USER@REMOTEHOST ffmpeg -an -f video4linux2 -s 640x480 -i /dev/video0 -r 10 -b:v 500k -f matroska - | mplayer - -idle -demuxer matroska

ที่ไหน

  • -anปิดการเข้ารหัสเสียง หากคุณต้องการเสียงให้แทนที่-anด้วย-f alsa -ac 1 -i hw:3(โดยที่ hw: 3 อาจเป็น hw: 0 หรือ hw: 1, …ดูarecord -lอุปกรณ์ของคุณ) หากคุณต้องการเสียงเท่านั้น (ไม่มีวิดีโอ) ใช้สิ่งนี้ )
  • -s 640x480 คือขนาดวิดีโอของคุณในขนาด x และ y
  • -r 10 เป็นอัตราเฟรมที่คุณต้องการรับ (ด้านล่างทำให้ภาพดีขึ้นที่บิตเรตต่ำ แต่ดู bumby มากขึ้น)
  • -b:v 500k เป็นอัตราบิตของ 500 กิโลบิตต่อวินาที

คุณต้องการ ffmpeg บนรีโมตโฮสต์และ mplayer บนเครื่องโลคัลที่ติดตั้ง


4

โครงการ VideoLANอยู่ในส่วนใหญ่จะทำเพียงแค่สิ่งที่คุณต้องการ

ฉันไม่ได้ใช้ความสามารถในการสตรีม แต่ในเครื่องเดียวใช้มันได้แสดงให้เห็นถึงความแข็งแกร่งสำหรับฉัน


คุณช่วยอธิบายถึงสถานการณ์นี้ได้ไหม ...
MikeW

1

คำตอบที่ยอมรับใช้ไม่ได้สำหรับฉัน ddเพียงแค่จะไม่อ่าน ncไม่ดีถ้าคุณไม่สามารถสำรองพอร์ตอื่น (ฉันไม่ได้รับการทำงานเลย) catไม่ได้ผลสำหรับฉันเช่นกัน

สิ่งที่ทำให้ฉันทำงานได้ในตอนท้ายคือ

ssh user@host "ffmpeg  -r 14 -s 640x480 -f video4linux2 -i /dev/video0 -f matroska -" | mplayer - -idle

นี่เป็นข้อดีของการเข้ารหัสดังนั้นคุณจึงประหยัดแบนด์วิดท์เป็นโบนัสได้ ไม่มีอะไรในฟอรัม / เว็บไซต์ใดที่ทำงานให้ฉันบนเครื่องเดเบียน


รวมกับทีและคุณสามารถดูและบันทึกในเวลาเดียวกัน:

ssh user@host "ffmpeg  -r 14 -s 640x480 -f video4linux2 -i /dev/video0 -f matroska -" | tee $(date +%Y-%m-%d_%H-%M-%S)_recording.mkv | mplayer - -idle

นี้จะเปิด mplayer สำหรับการสตรีมสดและบันทึกลงในไฟล์ที่มีวันที่และเวลาปัจจุบันในเวลาเดียวกัน (เช่นชื่อไฟล์: 2018-11-22_01-22-10_recording.mkv)


0

ฉันไม่รู้ว่ามีเหตุผลใดที่คุณทำไม่ได้ แต่ปัญหาหนึ่งที่ฉันเห็นเกี่ยวกับการใช้งานของคุณคือระบบรีโมตจะค้นหา / dev / video1 บนระบบ แต่ไม่สามารถหาได้เพราะ คุณสร้างขึ้นในระบบท้องถิ่นของคุณ

สิ่งที่ฉันทำคือสิ่งต่อไปนี้

nc -l 12345 | sudo tee /dev/video > /dev/null &
ssh Office

จากนั้นลองทำบางสิ่งโดยบอกให้ไปที่พอร์ต TCP ของระบบโลคอล 12345


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