Jouer avec sa webcam, effectv, vloopback et ssh
Un article de Bellinux.
Mais quel est le but de cette page??
un mur d'écran interactif à pas cher!!!
Matériel : - 10 ordis dont un un peu plus puissant - 1 webcam - 1 clef usb - 1 téléphone qui a l'option "télécommande bluetooth"
Softs : - ssh - vloopback - effectv - bluetooth - synergy
un mur d'écrans, une personne devant avec un telephone à la main, qui voit sa tète sur les écrans via la webcam qui pointe sur elle.
Mur de 3x3, pour imposer un peu...
Sur tous les écrans, des effets différents, sur sa propre image en temps réel. pour chaque écran, les 48 effects disponibles de effectv.
possibilité de se connecter au mur d'écran avec son téléphone. le téléphone maitrise une souris (grosse et flashy de préférence, pour pas la louper) qui peut basculer d'un écran à l'autre avec le panel central du téléphone. le téléphone les touches flèche haut, flèche bas du clavier, touches qui correspondent au changement d'effect sous effectv, avec les touches 2 et 5 du téléphone
De quoi faire délirer les gens...! de quoi délirer à le faire ...!
- ordinateurs en réseau - openssh-server sur tous les ordis - effectv et vloopback sur l'ordinateur qui a la webcam
1 Sur l'ordinateur équipé de la webcam :
- installer effectv > apt-get install effectv - tester effectv en le lançant via un terminal > là, on ne peut lancer que 1 effectv à la fois...
- installer vloopback > il faut le télécharger et le compiler. cf. [[1]] > installer le module avec insmod vloopback.ko
- utiliser le script 'resize' fourni dans le dossier 'example' afin de doublonner le flux de webcam. cela permettra de lancer x fois effectv > resize /dev/video0 /dev/video2 320x240 320x240 yuv420p > réponse "Starting video stream"
cette comande ne fais pas grand chose, par contre, maintenant, on peut lancer X fois effectv sur le meme device (virtuel) vidéo. (/dev/video2)
- là, on peut lancer X fois effectv (afin d'essayer X effets en meme temps) dans autant de terminaux que l'on veut > term 1 : effectv -device /dev/video2 > term 2 : effectv -device /dev/video2 AgingTV > term 3 : effectv -device /dev/video2 FireTV
>> là, si on en lance 9, ça nous fait un superbe carré de 3x3 avec l'image de la cam et des effets bizzzzares... comment afficher ça sur un mur d'écran de 3X3???
2 sur un autre ordi du réseau :
- lancer effectv via ssh et utilisation du X11 forwarding. > ordi01 : ssh -X IP_ordiaveclacam effectv /dev/video2 > ordi02 : ssh -X IP_ordiaveclacam effectv -fullscreen /dev/video2 FireTV
- inconvenient : il faut passer sur les X ordis ou l'on veut l'affichage... long!
> solution, centraliser les manips sur un seul ordi (idéalement celui ou il y a la cam!) - ouvrir autant de session ssh que d'ordis d'affichage > ordiaveclacam : ssh ip_ordi01 (sans le X forward!!!) > ordiaveclacam : ssh ip_ordi02 (sans le X forward!!!) > ...
- à ce moment, on a, sur l'ordi avec la cam, 9 terminaux logués sur chacuns des ordis du mur d'écran, > term1_ordiaveclacam : ordi1 : > term2_ordiaveclacam : ordi2 : > term3_ordiaveclacam : ordi3 : ...
si on veut, on peut lancer depuis ces terminaux, une requete ssh pour faire activer effectv de manière distante, cependant, il ne s'affiche pas sur l'écran distant, mais sur l'ordi d'ou on veut tout gérer; nul!
- authoriser un xhost : > term1_ordiaveclacam : ordi1 : xhost +IP_ordiaveclacam - définir la variable display > term1_ordiaveclacam : ordi1 : export DISPLAY=":0.0" - relancer effectv sur le pc d'affichage via la console en ssh : > term1_ordiaveclacam : ordi1 : ssh -X IP_ordiaveclacam effectv /dev/video2 AgingTV
- ajouter l'option fullscreen et hop, le tour est joué, l'affichage est déporté sur un écran du mur! - on recommence la manip sur tous les terminaux loggué sur les ordis du mur d'écran : > term1_ordiaveclacam : ordi1 : ssh -X IP_ordiaveclacam effectv -fullscreen /dev/video2 AgingTV > term2_ordiaveclacam : ordi2 : ssh -X IP_ordiaveclacam effectv -fullscreen /dev/video2 FireTV > term3_ordiaveclacam : ordi3 : ssh -X IP_ordiaveclacam effectv -fullscreen /dev/video2 PsychedelikTV ...
voila notre mur d'écran qui nous montre 9 fois notre belle gueule, toute dans une ambiance différente.
là, si on a les 9 claviers sous la main, on peut s'amuser à changer tel ou tel effet de tel ou tel écran quand on arrive à capter quel clavier controle quel ordi...
on pourrait s'arréter là, car au pire, on utilise l'option -autoplay 3000 pour faire un espèce de changement automatique d'effet sur les écrans.
ps : déjà essayé avec 6, ça fonctionne...! [[2]]
MAIS
on peut jouer un peu plus!
la couche supplémentaire : combinaison téléphone / télécommande bluetooth / synergy
synergy?
apt-cache search synergy : Share mouse, keyboard and clipboard over the network ! :D
synergy est en mode client - serveur Donc, le serveur sur l'écran du centre du mur d'écran, les clients sur les écrans du bord du mur. sur l'ordi du centre, il faut brancher la clé usb bluetooth et activer la gestion à distance. il faut lancer le serveur synergys avec un fichier de conf ~/synergy.conf comme ceci
section: screens
ordicentremilieu:
ordicentregauche:
ordicentredroit:
ordihautmilieu :
ordihautgauche :
ordihautdroit :
ordibasmilieu :
ordibasgauche :
ordibasdroit :
end
section: links
ordicentremilieu:
top = ordihautmilieu
right = ordicentedroit
bottom = ordibasmilieu
left = ordicentregauche
ordicentregauche:
top = ordihautgauche
right = ordicentremilieu
bottom = ordibasgauche
left = ordicentredroit (on sort du mur, donc on rerentre de l'autre coté!)
ordicentredroit:
top = ordihautdroit
right = ordicentregauche (on sort du mur, donc on rerentre de l'autre coté!)
bottom = ordibasdroit
left = ordicentremilieu
ordihautmilieu:
top = ordibasmilieu (on sort du mur, donc on rerentre de l'autre coté!)
right = ordihautdroit
bottom = ordicentremilieu
left = ordihautgauche
ordihautgauche:
top = ordibasgauche (on sort du mur, donc on rerentre de l'autre coté!)
right = ordihautmilieu
bottom = ordicentregauche
left = ordihautdroit (on sort du mur, donc on rerentre de l'autre coté!)
ordihautdroit:
top = ordibasdroit (on sort du mur, donc on rerentre de l'autre coté!)
right = ordihautgauche (on sort du mur, donc on rerentre de l'autre coté!)
bottom = ordicentredroit
left = ordihautmilieu
ordibasmilieu:
top = ordicentremilieu
right = ordibasdroit
bottom = ordihautmilieu (on sort du mur, donc on rerentre de l'autre coté!)
left = ordibasgauche
ordibasgauche:
top = ordicentregauche
right = ordibasmilieu
bottom = ordihautgauche (on sort du mur, donc on rerentre de l'autre coté!)
left = ordibasdroit (on sort du mur, donc on rerentre de l'autre coté!)
ordibasdroit:
top = ordicentredroit
right = ordibasgauche (on sort du mur, donc on rerentre de l'autre coté!)
bottom = ordihautdroit (on sort du mur, donc on rerentre de l'autre coté!)
left = ordibascentre
end
là, avec un clavier / souris, on peut maitriser les 9 ordis du mur d'écran!!!
maintenant, dernier problème : effectv passe en fullscreen sur les 9 ordis, donc on a plus la main avec la souris. donc on peut pas dire à synergy : passage de l'écran central à l'écran à la droite, car ça se fait avec la souris. il faut trouver la solution pour garder un affichage de la souris pendant le plein-écran de effectv!
...dernier _petit_ point bloquant permettant une telle installation. si près du but, on vas pas chipoter...
