Sie können netcat verwenden.
cat /dev/video0 | nc -l 1234
Dadurch wird ein Server auf einem Host geöffnet, der Port 1234
überwacht und Senden von unkomprimierten und unverschlüsselten Daten von /dev/video0
an jeden Client, der eine Verbindung herstellt. Sie können die Daten auf einem anderen Host erhalten, indem Sie Folgendes aufrufen:
nc videohost 1234 | mplayer tv://device=/dev/stdin
wobei videohost
ist der Host, der Daten von /dev/video0
sendet .
Die Netcat-Lösung hat bei mir nicht funktioniert. Es zeigt entweder einen Pipe-Fehler oder cat
meldet Invalid input
.
Dies ist die einzige Lösung, die für mich funktioniert hat:
ssh [email protected] "ffmpeg -r 14 -s 640x480 -f video4linux2 -i /dev/video0 -f matroska -" | mplayer - -idle
Dies hat den Vorteil, dass es verschlüsselt ist, sodass Sie als Bonus Bandbreite sparen.
Kombinieren Sie mit tee und Sie können gleichzeitig zusehen und aufnehmen:
ssh [email protected] "ffmpeg -r 14 -s 640x480 -f video4linux2 -i /dev/video0 -f matroska -" | tee $(date +%Y-%m-%d_%H-%M-%S)_recording.mkv | mplayer - -idle
Dadurch wird mplayer für das Live-Streaming geöffnet und gleichzeitig in einer Datei gespeichert, die die aktuelle Datumszeit enthält (Beispieldateiname:2018-11-22_01-22-10_recording.mkv
).
Ersetzen Sie -f matroska
mit -f avi
um das stärker komprimierte avi-format zu verwenden. Dies spart eine Menge CPU-Ressourcen auf der Quelle und viel Bandbreite für ein verzögerungsfreies Erlebnis.
Davon würde ich Ihnen ernsthaft abraten. Ich habe kürzlich versucht, AVI-Videos über einen ssh://-Dateizugriff zu streamen, und es ist schmerzhaft. Denken Sie daran, dass das Video während dieses Vorgangs verschlüsselt und dann wieder entschlüsselt wird.
Wenn Ihr Computer das Komprimieren des Streams nicht bewältigen kann, wird er sicherlich nicht in der Lage sein, ihn zu verschlüsseln.
Eigentlich wollen Sie nur einen TCP-Tunnel für die Rohdaten haben:
http://www.vakuumverpackt.de/tcptunnel/