/ Dev / videoyu ssh üzerinden bağlayabilir miyim


26

İki bilgisayarım var, ofisimde bir masaüstü (bir web kamerası bağlı) ve ağ üzerinde başka bir yerde bir dizüstü bilgisayar var .

Genelde ofisime web kameramdan çalıştırarak bir göz atarım.

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

dizüstü bilgisayarımdan Xforwarding mplayer'ı sevmiyorum, öyleyse neden bunu laptopumda /dev/videoçalıştırarak bilgisayarıma tünel açamıyorum ?

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

ve ardından web kamerasını izlemek için ( dizüstü bilgisayarımda )

mplayer tv://device=/dev/video1

Yanıtlar:


14

Gibi bir şey:

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

yerel olarak benim için çalışıyor (SOA # 1). Yani:

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

Hem de

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

Dolayısıyla:

  1. Adlandırılmış yöneltme olmadan deneyin
  2. Bant genişliğini kontrol et

Ayrıca - in nasıl yaptığını değil iş (ekran siyah ekran, vb bilinmeyen aygıt hakkında şikayet)?


Sanırım mplayer'ımda bir sorun var. Eğer çalıştırırsam dd if=/dev/video0 | mplayer tv://device=/dev/stdinbana kaynağın meşgul olduğunu söyler. Aksi taktirde çalıştığım zaman bile çalışıyor (video görüyorum)mplayer tv://device=/dev/null
Stefan

1
Bu cevap oldukça yanıltıcıdır. "Doğru" çağrısı mplayerolabilir mplayer tv:// -tv device=/dev/stdinya da benzer, ancak bu işe yaramadı (karakter cihazları dddüzgün bir şekilde idare edebileceğinden daha özel ). Çalıştırdığınızda mplayer tv://device=/dev/stdin, bir cihaz spesifikasyonu görmüyor ve bu nedenle /dev/video0doğrudan çalışmaya geri dönüp “çalışma” yanılsamasını veriyor. Ancak web kamerası ve mplayerişlem ağ tarafından ayrıldığında hiç çalışmaz .
Daniel Wagner

Evet, bu doğru çalışıyor gibi görünüyor , çünkü yerel ana bilgisayara SSH yapıyorsunuz, ancak gerçekte başarısız oluyor ve mplayer yerel ana bilgisayardaki / dev / video0 değerine geri dönüyor. Bu komutları denerseniz, SSH'i farklı bir bilgisayara (yani localhost'a değil), yerel web kameranızı görürsünüz, uzaktaki bilgisayarı değil.
Jason Antman

Yerel ana bilgisayarda denediniz, ancak ssh localhost dd if=/dev/video0 | mplayer tv://device=/dev/stdiniki farklı bilgisayar kullanırken komut nasıl çalıştırılır ?
Francesco Boi

mplayer tv://device=/dev/stdinOSX'te alternatif nedir ?
Francesco Boi

14

Bant genişliği düşükse, video akışının sıkıştırılmasını tavsiye ederim:

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

nerede

  • -anses kodlamasını kapatır. Ses istiyorsanız, -anbununla değiştirin -f alsa -ac 1 -i hw:3(burada hw: 3, hw: 0 veya hw: 1,… olabilir arecord -l. Cihazınız için bkz .). Yalnızca ses istiyorsanız (video yok), bunu kullanın )
  • -s 640x480 videonuzun x ve y boyutundaki boyutu
  • -r 10 almak istediğiniz kare hızı mı (düşük bit düşük hızlarda daha iyi görüntüler elde eder, ancak daha fazla kabarık görünür)
  • -b:v 500k 500 kilobit / s bir bit hızıdır

Uzaktaki ana bilgisayarda ffmpeg ve kurulu yerel makinedeki mplayer'a ihtiyacınız var.


4

VideoLAN Projesi ne arzu sadece bunu büyük ölçüde mevcuttur.

Akış yeteneklerini kullanmamıştım, ancak tek makine kullanımında benim için sağlam olduğu ortaya çıktı.


Ve böylece, bu senaryo için detay verebilir misiniz lütfen?
MikeW

1

Kabul edilen cevap benim için işe yaramıyor. ddbasitçe okumaz. ncbaşka bir bağlantı noktasını boşa alamazsanız kötüdür (ben zaten bu işe yaramadı). catbenim için de işe yaramadı.

Benim için çalışmaya son veren şey şu:

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

Bunun kodlanmış olmasının avantajı vardır, böylece bant genişliğini bonus olarak kaydedersiniz. Herhangi bir forumda / web sitesinde başka hiçbir şey benim için bir debian makinesinde çalışmıyordu.


Tee ile birleştirdiğinizde , aynı anda izleyebilir ve kaydedebilirsiniz:

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

Bu, mplayer'ı canlı akış için açacak ve aynı anda geçerli tarih saatini içeren bir dosyaya kaydedecektir (örnek dosya adı:) 2018-11-22_01-22-10_recording.mkv.


0

Yapamamanızın bir nedeni olup olmadığını bilmiyorum, ancak uygulamanızla ilgili gördüğüm bir sorun, uzak sistemin sisteminde / dev / video1'ü arayacağı, ancak bulamayacağıdır. yerel sisteminizde yarattınız.

Yapacağım şey, aşağıdakiler boyunca bir şeydir.

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

ve yerel sisteminizin 12345 numaralı TCP bağlantı noktasına gitmesini söyleyerek bir şeyler deneyin.


Sorumu açıklığa kavuşturmaya çalıştım. Lütfen güncellenmiş versiyona bakın
Stefan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.