Vous pouvez utiliser netcat.
cat /dev/video0 | nc -l 1234
Cela ouvrira un serveur sur un hôte écoutant sur le port 1234
et l'envoi de données non compressées et non chiffrées depuis /dev/video0
à tout client qui se connecte. Vous pouvez recevoir les données sur un autre hôte en invoquant :
nc videohost 1234 | mplayer tv://device=/dev/stdin
où videohost
est l'hôte qui envoie les données depuis /dev/video0
.
La solution netcat n'a pas fonctionné pour moi. Il affiche soit une erreur de canal, soit cat
rapport Invalid input
.
C'est la seule solution qui a fonctionné pour moi :
ssh [email protected] "ffmpeg -r 14 -s 640x480 -f video4linux2 -i /dev/video0 -f matroska -" | mplayer - -idle
Cela a l'avantage d'être encodé, ce qui vous permet d'économiser de la bande passante en prime.
Combinez avec tee et vous pourrez regarder et enregistrer en même temps :
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
Cela ouvrira mplayer pour la diffusion en direct et l'enregistrera dans un fichier contenant la date et l'heure actuelles en même temps (exemple de nom de fichier :2018-11-22_01-22-10_recording.mkv
).
Remplacer -f matroska
avec -f avi
pour utiliser le format avi plus compressé. Cela permettra d'économiser beaucoup de ressources CPU sur la source et beaucoup de bande passante pour une expérience sans décalage.
Je vous déconseille sérieusement cela. J'ai récemment essayé de diffuser des vidéos avi via un accès au fichier ssh:// et c'est douloureux. Vous devez vous rappeler que la vidéo est cryptée puis décryptée au cours de ce processus.
Si votre ordinateur ne peut pas gérer la compression du flux, il ne pourra certainement pas gérer son chiffrement.
Vraiment, vous voulez juste avoir un tunnel tcp pour les données brutes :
http://www.vakuumverpackt.de/tcptunnel/