it-swarm-es.tech

¿Puedo canalizar / dev / video sobre ssh

Tengo dos computadoras, una computadora de escritorio en mi oficina (con una cámara web adjunta) y una computadora portátil en otro lugar de la red.

Por lo general, miro mi oficina a través de mi cámara web al ejecutar

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

de mi laptop No me gusta Xforwarding mplayer, entonces ¿por qué no puedo hacer un túnel /dev/video a mi PC ejecutando esto en mi computadora portátil?

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

y luego mirar la cámara web (en mi computadora portátil )

mplayer tv://device=/dev/video1
28
Stefan

Algo como:

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

funciona para mí (SOA # 1) localmente. También lo hace:

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

Tanto como

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

Por lo tanto:

  1. Probar sin tubo con nombre
  2. Verificar ancho de banda

Además, ¿cómo funciona no funciona (muestra la pantalla en negro, se queja de un dispositivo desconocido, etc.)?

14
Maciej Piechotka

Si tiene un ancho de banda bajo, le recomiendo la compresión de la transmisión de video:

ssh [email protected] ffmpeg -an -f video4linux2 -s 640x480 -i /dev/video0 -r 10 -b:v 500k -f matroska - | mplayer - -idle -demuxer matroska

dónde

  • -an desactiva la codificación de audio. Si desea audio, reemplace -an con -f alsa -ac 1 -i hw:3 (donde hw: 3 también podría ser hw: 0 o hw: 1,… Ver arecord -l para su dispositivo). Si solo desea audio (sin video), se esto )
  • -s 640x480 es el tamaño de tu video en dimensión xey
  • -r 10 es la velocidad de fotogramas que desea recibir (menor hace mejores imágenes a bajas velocidades de bits, pero se ve más irregular)
  • -b:v 500k es una tasa de bits de 500 kilobit/s

Necesita ffmpeg en el host remoto y mplayer en la máquina local instalada.

15
erik

El Proyecto VideoLAN existe en gran parte para hacer exactamente lo que desea.

No he usado sus capacidades de transmisión, pero en su uso con una sola máquina ha demostrado ser muy sólido para mí.

4
msw

La respuesta aceptada no funciona para mí. dd simplemente no lo leerá. nc es malo si no puedes ahorrar otro puerto (tampoco conseguí que funcionara). cat tampoco funcionó para mí.

Lo que terminó funcionando para mí fue esto en el extremo receptor:

ssh [email protected] "ffmpeg  -r 14 -s 640x480 -f video4linux2 -i /dev/video0 -f matroska -" | mplayer - -idle

Esto tiene el beneficio de estar codificado, por lo que ahorra ancho de banda como un bono. Nada más en ningún foro/sitio web me funcionaba en una máquina Debian.


Combine con tee y puede ver 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 contiene la fecha y hora actual al mismo tiempo (nombre de archivo de ejemplo: 2018-11-22_01-22-10_recording.mkv).

2
confetti

No sé si hay alguna razón por la que no puede hacerlo, pero un problema que veo con su implementación es que el sistema remoto buscará/dev/video1 en su sistema, pero no podrá encontrarlo porque lo creaste en tu sistema local.

Lo que haría es algo a lo largo de lo siguiente

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

y luego intente algo diciéndole que vaya al puerto de su sistema local TCP puerto 12345.

0
Kevin M