Raspberry Pi : stream → HDMI¶
L’idée est la suivante : afficher le flux vidéo d’une caméra IP sur un écran. Pour ce faire, nous utiliserons un Raspberry Pi (abrégé Rpi par la suite) qui fera la transition entre le flux (stream) de la caméra vers l’écran, via la sortie HDMI. Première étape, la plus hasardeuse et plus ou moins complexe : récupérer l’adresse du flux vidéo. Cet article ne décrira pas comment le faire puisque la méthode changera suivant la marque de la caméra, voire suivant le modèle au sein d’une même marque. Format d’adresse du flux vidéo : Note Si l’accès au flux est sécurisé par une authentification simple à l’aide d’un nom d’utilisateur et d’un mot de passe, l’adresse complète du flux vidéo sera plutôt de ce genre :Le Flux Vidéo¶
http://IP/live/0/mjpeg.jpg
http://USER:PASSWORD@IP/live/0/mjpeg.jpg
Mise en Place¶
Une Raspbian minimale fera l’affaire sur votre Rpi. Nous allons installer OMXPlayer, un lecteur vidéo spécialement conçu pour le processeur graphique (GPU) du Rpi :
sudo apt install omxplayer
Ensuite, voici la ligne de commande pour lire le flux vidéo vers la sortie HDMI :
omxplayer -o hdmi URL
Script Complet¶
Ci-dessous est le script complet qui lancera automatiquement l’affichage de la caméra sur l’écran :
#!/bin/bash
user='user'
password='password'
ip='127.0.0.1'
url='/live/0/mjpeg.jpg'
stream="http://${user}:${password}@${ip}${url}"
while true; do
for n in $(seq 10 -1 1); do
clear
echo "Vidéo dans ${n}s…"
sleep 1
done
omxplayer -o hdmi \
--no-osd \
--no-keys \
--aidx -1 \
--refresh \
--live \
"${stream}"
done
Note
sleep 10
est important, sans ça, OMXPlayer s’arrête sur une erreur « Aborted » ;--aidx
permet de choisir la piste audio (-1 pour désactiver l’audio) ;l’utilité du
while true
est de relancer OMXPlayer en cas de rupture du flux vidéo de la part de la caméra.
Exemple¶
D-Link DCS-2210¶
Un exemple concret avec la caméra de surveillance D-Link DCS-2210 :
user='admin'
password='password'
ip='192.168.0.24'
url='/video/mjpg.cgi?profileid=2'
Le flux choisi est le profile n°2, configuré comme tel :
Mode : JPEG (car le Raspberry Pi 1 n’est pas assez puissant pour décoder du MPEG4/H264 en haute qualité) ;
Frame size : 1280x720 ;
View window area : 1280x720 ;
Maximum frame rate : 25 (ou 30 suivant le modèle) ;
Video quality : Excellent.
Lancement au Démarrage¶
Plusieurs solutions s’offrent à nous :
# (…)
sh /opt/stream-hdmi.sh &
@reboot USER sh /opt/stream-hdmi.sh &
# (…)
sh /opt/stream-hdmi.sh &
exit 0
📜 Historique¶
- 2024-02-01
Déplacement de l’article depuis le blog.
- 2016-11-19
Suppression de l’argument
--loop
(convient pour les fichiers, pas les flux).Ajout de l’exemple D-Link DCS-2210.
- 2016-06-23
Utilisation de l’argument
--aidx
.- 2016-06-02
Premier jet.