Regie multi-diffusion video raspberry

De Centre de Ressources Numériques - Labomedia
Aller à : navigation, rechercher

Le principe

Commander 6 raspberry pi 3 en wifi depuis un pc pour diffuser des vidéos présentent sur les pi via omxplayer et puredata.

Matériel

  • 1 x pc
  • 1 x routeur wifi
  • 6 x raspberry pi3
  • 6 x disque dur pi drive 250Gb

Architecture

  • Toutes les Pi se connectent à un routeur Wifi ainsi qu'un ordinateur central
  • L'ordinateur central envoie des commandes à chaque Patch Pd sur chaque Pi pour piloter Omxplayer

Technique

Utilisation de Raspberry Pi 3 avec Raspbian, omxplayer piloté par Pure Data en réseau

Un exemple de commande :

omxplayer -d --blank WGBH_MEDIUM-IS-THE-MEDIUM_1969_PR.mp4
  • -d pour désentrelacer
  • --blank pour occuper tout l'écran avec un fond noir (si diff d'une video 4/3 sur un écran 16/9 par ex)

Coté pi

-6 raspberry3 + 6 disque dur PiDrive 250Gb

On part avec la version minimale raspbian-strecth-lite

sudo apt-get update 
sudo apt-get upgrade

Installation OMX player

  • Installer git :
sudo apt-get install git
  • Downloader OMX player
git clone https://github.com/popcornmix/omxplayer.git
  • Modifier le script d'installations des dépendances
sed -i 's/gcc-4.7/gcc-4.9/g;' prepare-native-raspbian.sh
sed -i 's/g++-4.7/g++-4.9/g;' prepare-native-raspbian.sh
sed -i 's/libssl-dev/libssl1.0-dev/g;' prepare-native-raspbian.sh
sed -i 's/libboost1.50-dev/libboost1.58-dev/g;' prepare-native-raspbian.sh

voir par

  • Installer les dépendances
sudo apt-get install  git-core subversion libasound2-dev libva1 libpcre3-dev libidn11-dev libusb-1.0-0-dev libdbus-1-dev libssl-dev libsmbclient-dev gcc-4.9 g++-4.9 libboost1.58-dev libssh-dev libssl1.0-dev
./prepare-native-raspbian.sh
  • Compiler ffmpeg, omxplayer puis installer
make ffmpeg
make -j 4
sudo make install

Installation de puredata

apt-get install puredata-core pd-ggee

Utilisation de pd-omxplayer

Une interface puredata pour commander omxplayer via osc depuis un ordi

  • Créer un répertoire src
cd ~/
mkdir src
cd src
  • Cloner le dépot git
git clone --recursive https://github.com/gllmAR/pd-omxplayer
  • Changer les parmissions du nouveau répertoire
cd pd-omxplayer
chmod +rx OMXdbuscontrol.sh
  • Test du démon
pd -nogui ~/src/pd-omxplayer/omx-deamon.pd

Montage disque dur externe au boot

  • connaitre l'identifiant du disque
sudo blkid
  • Modifier fstab
sudo nano /etc/fstab

ajouter :

#/dev/sda2
UUID=2402-1C04        /media/disk     vfat    nofail,auto,noatime,rw,user    0   0

Démarrage du démon puredata au boot

sudo nano /etc/rc.local

ajouter la ligne suivante avant exit 0

pd -nogui /home/pi/src/pd-omxplayer/omx-deamon.pd &

Écran noir au démarrage

  • connaitre temps avant veille en secondes
cat /sys/module/kernel/parameters/consoleblank
  • modifier le fichier cmdline.txt
sudo nano /boot/cmdline.txt

et ajouter

consoleblank=20
  • source

https://www.raspberrypi.org/documentation/configuration/screensaver.md

Configuration SSID cahé

  • Lister les wifi diponnibles
sudo iwlist wlan0 scan
  • Configurer la connexion à un wifi caché
sudo nano /etc/network/interfaces
auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
       wpa-scan-ssid 1
       wpa-ap-scan 1
       wpa-ssid "Nom_du_réseau"
       wpa-psk "Mot_de_passe"


  • Sources

https://raspberrypi.stackexchange.com/questions/32872/how-do-i-connect-a-raspberry-pi-to-a-hidden-network-with-no-passkey-using-a-stat

https://stackoverflow.com/questions/28031274/configure-wifi-hidden-ssid-on-raspbian-edimax-wifi-adapter

IP fixe

  • Désactiver l'interface wifi
 sudo ifdown wlan0
  • Modifier /etc/network/interfaces
auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
        wpa-scan-ssid 1
        wpa-ap-scan 1
        wpa-ssid "Nom_du_réseau"
        wpa-psk "mot_de_passe"
        address 192.168.2.101
        netmask 255.255.255.0
        gateway 192.168.2.1
        broadcast 192.168.2.255
        dns-nameservers 192.168.2.1
  • Activer l'interface wifi
 sudo ifup wlan0

ou...???

sudo systemctl enable networking.service
  • Vérifier que tout est dans l'ordre
sudo ifconfig -a
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.2.101  netmask 255.255.255.0  broadcast 192.168.2.255
        inet6 fe80::ba27:ebff:fe0f:53a  prefixlen 64  scopeid 0x20<link>
sudo reboot
  • Sources

https://raspberrypi.stackexchange.com/questions/37920/how-do-i-set-up-networking-wifi-static-ip-address/37921#37921

https://manpages.debian.org/stretch/ifupdown/interfaces.5.en.html

https://debian-facile.org/doc:reseau:interfaces

https://www.linuxbabe.com/command-line/ubuntu-server-16-04-wifi-wpa-supplicant

Scan wifi

sudo iwlist wlan0 scan

Multiplication

Cloner l'image raspbian

Suite aux divers installations il faut maintenant cloner la carte SD de test sur les 6 pi de production.

  • Monter la carte SD sur son ordinateur avec linux
df -h
sudo umount /dev/mmcblk0p1 /dev/mmcblk0p2
  • Installer l'utilitaire de copie (plus évolué que dd)
sudo apt-get install dcfldd
  • lancer la création de l'image disque
sudo dcfldd if=/dev/mmcblk0 of=/image.img


http://www.aoakley.com/articles/2015-10-09-resizing-sd-images.php

http://www.framboise314.fr/clonez-la-carte-sd-de-votre-raspberry-pi/

https://github.com/billw2/rpi-clone

https://raspberrypi.stackexchange.com/questions/5440/copy-existing-raspbian-installation-to-smaller-sd-card

https://github.com/qrti/shrink

https://softwarebakery.com//shrinking-images-on-linux

Transfert de données depuis un ordi vers les pi

  • Utilisation de SCP pour de petits transferts
    • Copie de fichier depuis l'ordi vers les pi
scp /media/mon_fichier pi@192.168.1.12:/media/disk/
    • Copie de dossier depuis l'ordi vers les pi
 scp -r /media/mon_fichier pi@192.168.1.12:/media/disk/
  • Utilisation de rsync pour de long transferts
rsync -avP /media/mon_fichier pi@192.168.1.12:/media/disk/
  • Sources :

SCP : https://www.it-connect.fr/chapitres/transfert-de-fichier-via-ssh/ RSYNC : https://raspberrypi.stackexchange.com/questions/8950/copy-files-from-osx-to-from-pi/9818

Coté ordi maître

un brix i3 sous lubuntu 17.10

Installer pure data et ses librairies

sudo apt install puredata pd-ggee pd-cyclone pd-iem pd-iemlib pd-iemnet pd-import pd-maxlib pd-osc pd-zexy

Terminal multi-fenêtre

Terminal multi-fenêtre permettant de diffuser les commandes tapées aux autres terminaux (Alt+A)

sudo apt-get install terminator

http://terminator-gtk3.readthedocs.io/en/latest/index.html

Gérer écran de veille

xfce4-power-manager-settings

VPN

  • openvpn
sudo apt install openvpn
sudo openvpn --config mon-vpn.ovpn
  • vnc
sudo apt install x11vnc

  • x11vnc
x11vnc -display :0
  • de l'autre coté
sudo apt install tightvnc-java 
sudo openvpn --config mon-vpn.ovpn
vncviewer 10.0.0.0

Lancer script au démarrage

Par défaut rc.local n'est pas activé, pour l'activé :

printf '%s\n' '#!/bin/bash' 'exit 0' | sudo tee -a /etc/rc.local
sudo chmod +x /etc/rc.local
sudo reboot

puis

sudo systemctl edit --full rc-local
sudo systemctl enable rc-local.service

faire un tcheck

sudo systemctl start rc-local.service
sudo systemctl status rc-local.service

enfin

nano /etc/rc.local
  • source

https://www.linuxbabe.com/linux-server/how-to-enable-etcrc-local-with-systemd

Coté diffusion

Gérer configuration vidéo des pi

https://www.raspberrypi.org/documentation/configuration/config-txt/video.md