Scoonch
Posts: 28
Joined: Mon Jan 28, 2013 2:31 pm

Projet installation vidéo

Mon Jan 28, 2013 4:29 pm

Bonjour à tous,
voilà je travail en ce moment sur une installation d'une animation vidéo en boucle avec 8 vidéo projecteurs.

Pour cela, je suis partis sur cette config:
La diffusion se ferait via 8 raspberry reliés entre eux par ethernet. voilà le dessin de l'installation (fais rapidement désolé de la qualité :))

Image

Chaque rapsberry (esclaves) aurait une partie de l'animation totale et qu'ils seraient synchronisés avec 9e rapsberry (maitre).

Ma première question est de l'utilité du 9e rapsberry, le maitre peut il aussi diffuser (ca ferait 1 rapsberry en moins)?
Et ma deuxième question, quelle est le meilleur moyen pour obtenir la synchro des 8 rapsberry?
=>Je suis en ce moment en train de me pencher sur omxplayer et je viens de faire fonctionner un script pour la lecture en boucle.

Et ma dernière question est sur la qualité des composants, sachant que je voudrais faire tourner cette boucle pendant plusieurs jours et plusieurs heures par jour. Est-ce qu'ils vont tenir la durée? (pour ca j'aurai ma réponse en faisant les test mais si vous avez un avis...)

Merci d'avance pour votre aide!

Scoonch
Posts: 28
Joined: Mon Jan 28, 2013 2:31 pm

Re: Projet installation vidéo

Thu Feb 07, 2013 9:40 am

up.

Nickko
Posts: 199
Joined: Tue Jan 15, 2013 10:31 pm

Re: Projet installation vidéo

Thu Feb 07, 2013 12:22 pm

Pour la durée, s'ils sont correctement aérés, pas de problème.

Pour le reste il faudrait savoir comment tu fais techniquement pour te répondre.

Gaetan
Posts: 17
Joined: Fri Oct 26, 2012 10:19 am
Location: Lieusaint (77, France)

Re: Projet installation vidéo

Thu Feb 07, 2013 12:48 pm

Je pense aussi que cela vaudrait le coup de traduire ton projet en anglais, et tu verras, je pense, les réponses affluer...

Scoonch
Posts: 28
Joined: Mon Jan 28, 2013 2:31 pm

Re: Projet installation vidéo

Fri Feb 08, 2013 4:31 pm

salut,
en fait je bosse avec un pote sur un script shell. Je viens de terminer une première ébauche de plan de programmation:
http://demo.ovh.com/en/828dfd2d385744de ... 1c3a50100/

C'est la première fois que l'on fais ca, j'espère que ce n'est pas trop aberrant et c'est vrai que je ferais bien de traduire le post en anglais.

Merci de vos réponses.

Scoonch
Posts: 28
Joined: Mon Jan 28, 2013 2:31 pm

Re: Projet installation vidéo

Fri Feb 22, 2013 4:03 pm

Youhou, après plusieurs heures à essayer de comprendre et de coder en bash, nous en sommes arrivé à ce système de script:

Alors voila le script du maitre:

============= maitre.1.sh =====================

#!/bin/sh

function test_go(){
test -e gpil/go/go1.txt &&
test -e gpil/go/go2.txt &&
test -e gpil/go/go3.txt &&
test -e gpil/go/go4.txt &&
test -e gpil/go/go5.txt &&
test -e gpil/go/go6.txt &&
test -e gpil/go/go7.txt &&
test -e gpil/go/go8.txt ;
}

if test_go; then
echo " les rapsberry sont prets";
else exec $0
fi

touch gpil/go.txt && echo "le fichier go.txt à été créé";
sleep 5;
rm gpil/go/go1.txt && echo "le fichier go1.txt à été supprimé";
rm gpil/go.txt && echo "le fichier go.txt à été supprimé";
sleep 1;
exec $0

============================================

Voilà les scripts de l'esclave:

============= esclave1.1.sh ===================

#!/bin/sh


ssh pi@192.168.1.69 bash < ./depart.sh && omxplayer -o hdmi /home/pi/test1.mov;
sleep 3;
exec $0

============================================

============ depart.sh ========================

#!/bin/sh

touch ~/gpil/gpil/go/go1.txt && echo "le fichier go1.txt à été créé";

if [ -f ~/gpil/gpil/go.txt ]; then
écho "esclave1 : le fichier go.txt est présent";
else exec $0
fi

exit 0;

============================================


Les communications entre les deux raspberry se font bien, maintenant il faut que je test avec deux esclaves pour savoir s'il y a bien la synchro des vidéos et, au final, avec les 8.

Le seul problème que je rencontre maintenant est au niveau de la connection ssh de l'esclave vers le maitre qui me demande à chaque fois le mot de pass utilisateur "pi".
J'ai essayé en mettant directement le mdp dans la commande =>
ssh pi:PASS@192.168.1.69 bash < ./depart.sh && omxplayer -o hdmi /home/pi/test1.mov;
mais sans succès :(

Après je cherche maintenant une commande pour forcer un écran noir sur les Raspberry afin que l'on ne voit que la vidéo sur les vidéos projecteurs. J'ai remarqué que quand le Raspberry se mettait en veille sur le terminal (au bout de plusieurs minutes d'inactivité), j'ai bien un écran noir et que la vidéo qui s'affiche. Je penses donc qu'une commande pour mettre le raspberry en veille suffirai.

Enfin s'il a des idées des bug probable avec ma façon d'écrire les scripts.

DeFlaMenTaL
Posts: 17
Joined: Wed Nov 28, 2012 7:36 pm

Re: Projet installation vidéo

Mon Feb 25, 2013 10:40 am

Salut, je trouve ton projet très prometteur, mais je me suis demandé pourquoi souhaitais-tu utiliser 8-9 raspberry alors qu'il est possible de mettre 8 sorties vidéo dans une même tour.

J'avoue, je casse un peu le truc sur le forum raspberry mais au vu du coût des projecteurs, je pense pas que tu sois à 100-200€ près ?

Sinon bonne chance pour la synchro ;)

Scoonch
Posts: 28
Joined: Mon Jan 28, 2013 2:31 pm

Re: Projet installation vidéo

Mon Feb 25, 2013 10:48 am

Salut DeFlaMenTaL,
c'est effectivement un problème d'argent, faire une config avec 8 sorties vidéo couterais une blinde et
les vidéo-projecteurs font partis de notre parc. Il y a un coté challenge aussi ;)

Juliano63
Posts: 9
Joined: Mon Feb 25, 2013 1:57 pm

Re: Projet installation vidéo

Mon Feb 25, 2013 2:06 pm

Pour ta connexion SSH, si tu ne veux pas faire de mot de passe, tu dois passer par en échange de lef public/privée (http://prendreuncafe.com/blog/post/2005 ... ur-distant)
Ensuite je ne sais pas ce que tu veux commander sur tes raspberry mais c'est assez long a passer une commande via ssh.

Tu ferais peux etre mieux de passer par un programme c, ou si tu tiens absolument a faire du bach par un socat, ou bien par une fifo sur un montage nfs.

Scoonch
Posts: 28
Joined: Mon Jan 28, 2013 2:31 pm

Re: Projet installation vidéo

Tue Feb 26, 2013 9:22 am

OK je vais test ton tuto. Il n'y qu'une seule commande en ssh, c'est un lancement de script à distant:
ssh pi@192.168.1.69 bash < ./depart.sh

Elle sera faite par tout les raspberry esclaves, qui lancerons un script sur le maitre (en gros juste pour dire qu'ils sont prêts à lire la boucle vidéo). C'est vrai que j'ai un peu peur avec cette commande car les 8 raspberry vont lancer 1 script chacun sur le maitre, ca va peut être le surchargé et ducoup niquer la synchro...
Déjà je vais essayer avec les 3 rapsberry et voir ce que ca donne, je changerai mon plan si c'est galère.
je ne tiens pas particulièrement à faire du bash mais c'était, pour moi gros noob, ce qui me paraissait le plus simple à coder (apprentissage et codage).

Scoonch
Posts: 28
Joined: Mon Jan 28, 2013 2:31 pm

Re: Projet installation vidéo

Fri Mar 01, 2013 11:14 am

Bon, il y a du nouveau...
J'ai réussi à faire les connections SSH sans mot de passe, ce qui ma permis de voir que mes scripts n'allaient pas du tout :evil: Je les ais donc modifier pour arriver à un bon fonctionnement mais... comme avait dit juliano63, les commandes en SSH sont très lente donc je n'ai pas du tout de synchro entre les vidéos. Voici les nouveaux scripts:

Script maitre.sh:

Code: Select all

#!/bin/bash

function test_go(){
	test -e gpil/go/go1.txt &&
	test -e gpil/go/go2.txt &&
	test -e gpil/go/go3.txt &&
	test -e gpil/go/go4.txt &&
	test -e gpil/go/go5.txt &&
	test -e gpil/go/go6.txt &&
	test -e gpil/go/go7.txt &&
	test -e gpil/go/go8.txt;
}

if test_go; then
	echo " les rapsberry sont prets";
	else exec $0
fi

touch ~/gpil/gpil/gom.txt && echo "le fichier go.txt à été créé";
sleep 2;
rm ~/gpil/gpil/gom.txt;
exec $0
Script esclave1.sh:

Code: Select all

#!/bin/bash

ssh alambik@192.168.0.10 'bash -s' < depart.sh; 
if ssh alambik@192.168.0.10 'test -e /home/alambik/gpil/gpil/gom.txt'; then
	omxplayer /home/pi/test1.mov;
	else echo "a pas"
fi

sleep 2;
exec $0
Script appelé juste au dessus "départ.sh":

Code: Select all

#!/bin/bash

	
touch /home/alambik/gpil/gpil/go/go2.txt;
echo "go2.txt à été créé";

	
if test -e /home/alambik/gpil/gpil/gom.txt; then
	echo "gogogogo";
	else exec $8
	fi

exit 0;
Snif snif.... tout ca pour rien... enfin pour l'instant. Mon système de création de fichiers et de test de ceux ci est un échec :X beaucoup trop lent...
On essaye actuellement d'utiliser la crontab pour faire des lancements de vidéos à heure fixe et avec les raspberry qui indexe leur heure sur le maitre. On a essayer de faire un script au niveau du maitre qui envoie sont heure actuelle à chacun des raspberry:

Code: Select all

#!/bin/bash

date "+%m%d%H%M.%S";
KK=$?;
ssh pi@192.168.0.11 "sudo date $KK";


exit 0;
A marche PO... PUTAIN!!! :) le raspberry ne reconnais pas la réponse de la commande date...
Après même problème car la connection SSH est lente donc je pense qu'avec cette facon il y aura un décalage d'environs 1 ou 2 secondes avec l'heure de maitre (le temps de la connection SSH)
Avez vous une commande miracle pour envoyer l'heure d'un raspb. vers un autre assez rapidement?

Juliano63
Posts: 9
Joined: Mon Feb 25, 2013 1:57 pm

Re: Projet installation vidéo

Fri Mar 01, 2013 1:23 pm

Pour la synchro horaire, la solution la plus simple reste bien évidemment ntp.

En gros tu peux faire en sorte que que le rasp maitre fasse office de serveur ntp, et que les autres aillent se synchroniser vers lui.

Le soucis c'est que le raspberry n'a pas de RTC intégrée, du coup pas sur que la base de temps diffusées par le maitre soit suffisament linéaire.

Le mieux c'est encore d'utiliser un ntp soit directement sur le net, soit sur un serveur que tu aurait sur ton réseau local.

Juliano63
Posts: 9
Joined: Mon Feb 25, 2013 1:57 pm

Re: Projet installation vidéo

Fri Mar 01, 2013 1:31 pm

Par contre si je comprends bien tu veut utiliser tes 8 raspberry pour afficher 8 morceaux d'un image complète.
Je comprends ton soucis de synchro, mais sincérement je ne pense pas que tu puisse t'en sortir si facilement.

Le mieux est encore de diffuser une seule vidéo via rtsp (avec livemedia ou vlc ou gstreamer ou ce que tu veux), tu diffuse en multicast pour éviter les problèmes de synchro et tu joue ca avec le player de ton choix en retaillant ta vidéo pour chaque raspberry diffuse seulement la partie qu'ils doivent afficher.

Scoonch
Posts: 28
Joined: Mon Jan 28, 2013 2:31 pm

Re: Projet installation vidéo

Fri Mar 01, 2013 1:40 pm

Merci Juliano de ta réponse,
j'ai oublié de le préciser mais on a étudier la solution de serveur ntp sans succès. Pour l'installation, nous n'aurons pas d'accès internet (elle se fera en intérieur, dans une salle avec des mur d'1m de large). Donc si je te comprends bien, c'est mort de faire un serveur ntp avec un raspberry? Une solution possible, j'ai un portable lenovo T61 sous Linux Mint 14, tu crois que lui pourrait faire serveur?

Juliano63
Posts: 9
Joined: Mon Feb 25, 2013 1:57 pm

Re: Projet installation vidéo

Fri Mar 01, 2013 2:00 pm

Oui ton portable pourra faire serveur de temps sans soucis, mais sérieusement ton truc de synchro de cette manière, je pense que tu rêve un peu, perso je partira plûtot sur une diffusion multicast.

Scoonch
Posts: 28
Joined: Mon Jan 28, 2013 2:31 pm

Re: Projet installation vidéo

Fri Mar 01, 2013 2:21 pm

tu penses? tu pourrais préciser les merdes que tu penses que ca pourrait générer?

Dans ma logique, si tous le monde à exactement la même heure et qu'ils ont dans leur crontab:
à 12h00 tu lances la vidéo
à 12h15 tu lances la vidéo
....
Ca ne me parait pas abbérant.

Scoonch
Posts: 28
Joined: Mon Jan 28, 2013 2:31 pm

Re: Projet installation vidéo

Fri Mar 01, 2013 2:26 pm

L'idée est de travailler en lowcost. pour le multicast si je comprends bien ca serait de lire soit 8 vidéos 800x600 et de les streamer avec les raspb. Il faudrait donc une bête d'ordi pour faire ca et nous avons que le Lenovo. Sinon la lecture d'une seule vidéo mais avec une matrice énorme (8x 800 par 600)
et un stream de la vidéo partitionné car, au niveau débit on va être short si tous les raspberry recoivent la matrice totale. De plus, je ne suis pas sur que les raspberry vont aimer lire une vidéo de 64000x600.

Juliano63
Posts: 9
Joined: Mon Feb 25, 2013 1:57 pm

Re: Projet installation vidéo

Fri Mar 01, 2013 3:03 pm

Attention, ne pas confondre résolution et débit et qualité. Ne pas confondre streaming et transcodage;

Dans ton cas, tu as 8 vidéo en 800x600, sur cette base de résolution, tu dois pouvoir encoder préalablement tes flux sur un debit AVR de 1.5Mbits ton en gardant une bonne qualité. Du coup niveau ocupation réseau tu a 12Mbits a faire passer sur du 100MBits, même en comptant les overhead du a la stack UDP tu dervais être bon.

Ensuite c'est de la diffusion (un grand je prend un bout de fichier que je mets dans un buffer que j'envoi sur le réseau) pas du transcodage donc niveau cpu, ça doit quand même pas mal réduire la charge.



A mon avis tu devrais tester les deux solution

Juliano63
Posts: 9
Joined: Mon Feb 25, 2013 1:57 pm

Re: Projet installation vidéo

Fri Mar 01, 2013 3:10 pm

Scoonch wrote:tu penses? tu pourrais préciser les merdes que tu penses que ca pourrait générer?

Dans ma logique, si tous le monde à exactement la même heure et qu'ils ont dans leur crontab:
à 12h00 tu lances la vidéo
à 12h15 tu lances la vidéo
....
Ca ne me parait pas abbérant.
Ben le problème c'est que avec des vidéo même quelques millisecondes de décalage ça va se voir direct. Et OK tu va lancer plus ou moins en même temps mais tu va être tributaire de plusieur opération (accés au filesystem, buffering, décodage, trouver la premièere image clef) qui font que tu n'est pas maître du temps qui s'écoule entre le moment ou tu lance ta commande et le moment ou ton image est effecitvement affichée. (tu n'es pas dans un système temps réel)

Scoonch
Posts: 28
Joined: Mon Jan 28, 2013 2:31 pm

Re: Projet installation vidéo

Fri Mar 01, 2013 3:21 pm

ouai c'est une solution, le problème va être le temps maintenant. Est ce compliqué à mettre en place ?
Je pars vraiment de zéro sur tout :(

Juliano63
Posts: 9
Joined: Mon Feb 25, 2013 1:57 pm

Re: Projet installation vidéo

Fri Mar 01, 2013 3:34 pm

Occupe toi déjà de ta synchro ntp, quelque soit la solution choisie tu en aura besoin.

Si tu passe par la solution fichier je pense que le mieux et d'envoyer ta commande via ncat, avec tes rapsberry qui la recevront avec ncat (en upd sinon ce n'est pas possible).

Du coup tu peux commander tes rasperry de maniére synchrone avec un bete canal multicast.

Scoonch
Posts: 28
Joined: Mon Jan 28, 2013 2:31 pm

Re: Projet installation vidéo

Fri Mar 01, 2013 3:46 pm

ok merci, je vais bosser la dessus.

Scoonch
Posts: 28
Joined: Mon Jan 28, 2013 2:31 pm

Re: Projet installation vidéo

Mon Mar 04, 2013 4:57 pm

yop yop,
j'ai passé un bon ptit week end à essayer de comprendre les outils netcat, fifo, socat.... un vrai ptit hackeur en herbe... enfin presque.
j'arrive à creer des tunnels de com entre 2 raspberry avec

nc.traditional -lu -p 8000 -e /bin/sh #coté serveur

echo -e "omxplayer /home/pi/test1.mov" | nc -vu rasp2 8000 #coté client

Ca marche niquel, ca lance la vidéo mais maintenant il faut que je fasse cette commande en broadcast... et là, a na marche po. j'ai essayé d'ajouter l'option -b sur le serveur, sur le client et les deux en mettant l'adresse sur le client 192.168.1.255. Puis j'ai essayé de mettre 127.0.0.1 (client, serveur et les deux) mais sans succès (connection refused à chaque fois). je dois m'y prendre comme un manche :x ===> premiere question, comment on peut envoyer une commande en broadcast?

Deuxième question: peut on et comment, faire écouter les raspb esclave un même port du maitre pour leur envoyer en même temps la même info: "Lance toi"?

Scoonch
Posts: 28
Joined: Mon Jan 28, 2013 2:31 pm

Re: Projet installation vidéo

Tue Mar 05, 2013 11:46 am

J'ai trouvé les bons mots clé google pour configurer un multicast! ca marche niquel sur mon lenovo en linux mint.
Pour les raspberry sous Raspbian, j'ai reussi à activer le multicast en ajoutant
net.ipv4.icmp_echo_ignore_broadcasts = 0 dans le fichier etc/sysctl.conf
J'ai aussi envoyé un 0 à
/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

Quand je ping avec le Lenovo sur 224.0.0.1 j'ai bien une réponse du raspberry. Par contre quand je met en écoute "nc.traditional -vul -p 8000"
et que j'envois depuis le Lenovo "echo "omxplayer /home/pi/test1.mov" | nc -vu 224.0.0.1 -p 8000"
Il me dit qu'il se connecte bien sur l'ip 224.0.0.1 port udp 8000 mais le raspberry ne recoit rien :s
(Je viens d'essayer sans lancer l'écoute sur le raspberry, il se connecte quand même)

Après une petite recherche, je vois qu'il faut que le rapsb rejoigne un groupe donc j'installe le paquet: sudo apt-get install smcroute
Il me l'installe mais j'ai une erreur à la fin, puis impossible de lancer smcroute -d "INIT: Kernel does not support multicast routing; errno (92): Protocole not available"

please help :(

Juliano63
Posts: 9
Joined: Mon Feb 25, 2013 1:57 pm

Re: Projet installation vidéo

Wed Mar 20, 2013 1:01 pm

Bon,

J'arrive un peu tard.
Pas besoin de rejoindre le groupe multicast via un datagram igmp, vu que a priori il n'y a pas de routeur sur ton réseau.

Par contre, tu dois ajouter une route vers ton groupe multicast,
route add 224.0.0.0 netmask 240.0.0.0 dev eth0
et enfin tu dois aussi avoir le mutlicast activé dans ton kernel, pour le coup pas sur que ce soit le cas.

le plus simple pour toi est bien la solution broadcast, je vais regarder ça.

Return to “Français”