web-dev-qa-db-fra.com

Puis-je pipe / dev / vidéo sur ssh

J'ai deux ordinateurs, A Desktop Dans mon bureau (avec A webcam ci-joint) et a ordinateur portable ailleurs sur le réseau.

Habituellement, je regarde mon bureau à travers ma webcam en cours d'exécution

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

de mon ordinateur portable. Je n'aime pas Xforwarding MPlayer, alors pourquoi ne puis-je pas tunnel /dev/video à mon pc en exécutant ceci sur mon ordinateur portable?

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

et ensuite regarder la webcam (sur mon ordinateur portable)

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

Quelque chose comme:

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

travaille pour moi (SOA # 1) localement. Il en va de même:

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

Aussi bien que

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

D'où:

  1. Essayez sans pipe nommé
  2. Vérifier la bande passante

Aussi - comment fonctionne non fonctionne (écran d'affichage noir, se plaint d'un appareil inconnu, etc.)?

14
Maciej Piechotka

Si vous avez une bande passante basse, je vous recommande la compression du flux vidéo:

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

  • -an désactive le codage audio. Si vous voulez audio, remplacez -an avec -f alsa -ac 1 -i hw:3 (où HW: 3 pourrait aussi être HW: 0 ou HW: 1, ... Voir arecord -l pour votre appareil). Si vous voulez uniquement audio (pas de vidéo), tilisez ceci )
  • -s 640x480 est la taille de votre vidéo en X et Y dimension
  • -r 10 Est-ce que le framerer que vous voulez recevoir (plus bas fait de meilleures images à des débits bas, mais semble plus à Bumby))
  • -b:v 500k est un bitrate de 500 kilobit/s

Vous avez besoin de FFMPEG sur l'hôte distant et Mplayer sur la machine locale installée.

15
erik

Le projet Videolan existe en grande partie à faire ce que vous désirez.

Je n'ai pas utilisé ses capacités de diffusion de streaming, mais dans sa seule machine à utiliser, elle a montré une roche solide pour moi.

4
msw

La réponse acceptée ne fonctionne pas pour moi. dd _ il suffit de le lire. nc est mauvais si vous ne pouvez pas épargner un autre port (je n'ai pas reçu cela pour travailler de toute autre manière). cat n'a pas fonctionné pour moi non plus.

Ce qui a fini de travailler pour moi, c'est ceci à la fin de la réception:

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

Cela en a bénéficié d'être codé, de sorte que vous économisez la bande passante en tant que bonus. Rien d'autre sur un forum/site Web ne travaillait pour moi sur une machine debian.


Combinez avec TEE et vous pouvez regarder et enregistrer en même temps:

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

Cela ouvrira MPlayer pour la diffusion en direct et l'enregistrera dans un fichier contenant la datetime actuelle en même temps (exemple nom de fichier: 2018-11-22_01-22-10_recording.mkv).

2
confetti