Puedes usar netcat.
cat /dev/video0 | nc -l 1234
Esto abrirá un servidor en un host escuchando en el puerto 1234
y enviar datos sin comprimir y sin cifrar desde /dev/video0
a cualquier cliente que se conecte. Puede recibir los datos en otro host invocando:
nc videohost 1234 | mplayer tv://device=/dev/stdin
donde videohost
es el host que envía datos desde /dev/video0
.
La solución netcat no funcionó para mí. Muestra un error de tubería o cat
informando Invalid input
.
Esta es la única solución que funcionó para mí:
ssh [email protected] "ffmpeg -r 14 -s 640x480 -f video4linux2 -i /dev/video0 -f matroska -" | mplayer - -idle
Esto tiene la ventaja de que está codificado, por lo que ahorra ancho de banda como bonificación.
Combínalo con tee y podrás mirar y grabar al mismo tiempo:
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
Esto abrirá mplayer para transmisión en vivo y lo guardará en un archivo que contenga la fecha y hora actual al mismo tiempo (nombre de archivo de ejemplo:2018-11-22_01-22-10_recording.mkv
).
Reemplazar -f matroska
con -f avi
para usar el formato avi más comprimido. Esto ahorrará una gran cantidad de recursos de la CPU en la fuente y una gran cantidad de ancho de banda para una experiencia más libre de demoras.
Te aconsejaría seriamente contra esto. Recientemente intenté transmitir videos avi a través de un acceso a archivos ssh:// y es doloroso. Debe recordar que el video se cifra y luego se descifra durante este proceso.
Si su computadora no puede comprimir la transmisión, ciertamente no podrá cifrarla.
Realmente desea tener un túnel tcp para los datos sin procesar:
http://www.vakuumverpackt.de/tcptunnel/