Puoi usare netcat.
cat /dev/video0 | nc -l 1234
Questo aprirà un server su un host in ascolto sulla porta 1234
e l'invio di dati non compressi e non crittografati da /dev/video0
a qualsiasi client che si connette. Puoi ricevere i dati su un altro host invocando:
nc videohost 1234 | mplayer tv://device=/dev/stdin
dove videohost
è l'host che invia i dati da /dev/video0
.
La soluzione netcat non ha funzionato per me. Mostra un errore pipe o cat
segnalazione Invalid input
.
Questa è l'unica soluzione che ha funzionato per me:
ssh [email protected] "ffmpeg -r 14 -s 640x480 -f video4linux2 -i /dev/video0 -f matroska -" | mplayer - -idle
Questo ha il vantaggio di essere codificato, quindi risparmi larghezza di banda come bonus.
Combina con tee e puoi guardare e registrare allo stesso tempo:
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
Questo aprirà mplayer per lo streaming live e lo salverà in un file contenente la data e l'ora corrente allo stesso tempo (esempio nome file:2018-11-22_01-22-10_recording.mkv
).
Sostituisci -f matroska
con -f avi
per utilizzare il formato avi più compresso. Ciò farà risparmiare molte risorse della CPU sulla sorgente e molta larghezza di banda per un'esperienza più priva di ritardi.
Ti consiglierei seriamente di non farlo. Di recente ho provato lo streaming di video avi su un accesso al file ssh:// ed è doloroso. Devi ricordare che il video viene crittografato e quindi decrittografato durante questo processo.
Se il tuo computer non è in grado di gestire la compressione del flusso, sicuramente non sarà in grado di gestirne la crittografia.
Davvero vuoi solo avere un tunnel tcp per i dati grezzi:
http://www.vakuumverpackt.de/tcptunnel/