Enregistrer le flux vidéo de sa camera de surveillance

Publié
Commentaires Aucun

Enregistrer et historiser le flux vidéo de sa camera de surveillance IP

Il est très facile et courant de s’équiper d’une camera de surveillance aujourd’hui.
De nombreux appareils sont disponibles sur le marché, pour l’intérieur et pour l’extérieur
Cela va de la camera IP premier prix jusqu’à des appareils pilotables avec d’excellentes définitions d’image

mesure.jpg

La sécurité est bien souvent avancée comme argument, mais on s’aperçoit rapidement que cela se limite à l’envoi d’un e mail lors de la détection de mouvement dans l’image.

Et justement le mouvement dans l’image est bien souvent un arbre qui bouge avec le vent ou un pigeon qui passe

Quelques cameras sont équipée d’une carte SD pour l’enregistrement, mais bien souvent le format est propriétaire,il est peu aisé de récupérer les fichier ainsi stockés.
D’autre part il est facile de vandaliser la camera si elle est placée à l’extérieur de la maison et donc de casser la caméra ou/et dérober les vidéos (SD) qui pourraient identifier les malfrats

Dans le cas d’une camera IP, il est généralement facile de récupérer la vidéo en live en écoutant le flux IP

Comme les micro-PC comme le Raspberry ainsi que les supports de stockage sont facilement disponibles et pour des sommes assez dérisoires, nous allons voir ci-dessous comment facilement installer un serveur de vidéo qui va enregistrer les flux de cameras IP en continu avec plusieurs jours d’historique, et les rendre disponibles sur le réseau de la maison.

De quoi allons nous avoir besoin ?

  • Un serveur (comme on parle souvent de Raspberry pourquoi ne pas l’utiliser)
  • un support de stockage (clé USB, carte SD avec adaptateur, disque dur USB, etc.)
  • Une caméra IP

Comment fait on ?

code.jpg

Dans la suite de l’article, on considère que vous avez un serveur de type raspberry avec une version linux comme système d’exploitation. Les explications sont basées sur cet équipement

IP du Raspberry 192.168.1.10
IP de la caméra 192.168.1.250

Pour monter se serveur d’enregistrement vidéo, nous allons commencer par installer les différents packages qui vont nous servir

code.jpg

  • installation de VLC pour enregistrer
sudo apt-get install vlc 

Test d’enregistrement

  • on teste maintenant l’enregistrement du flux vidéo de la caméra. Vous noterez qu’il n’est pas nécessaire d’avoir un système Linux avec interface graphique ouverte
cvlc rtsp://utilisateur:mot de passe@192.168.1.250:8001 --no-sout-audio --start-time=00 --run-time=300 --sout file/ts:/home/utilisateur/test.ts

cvlc lance vlc en mode console
rtsp://utilisateur:mot de passe@192.168.1.250:8001 Rtsp est le protocole, suivi du nom d’utilisateur et du mot de passe pour accéder à la caméra, puis l’adresse IP et le port utilisés par la camera
—no-sout-audio Peu de caméras sont équipées de son, donc on ne l’ajoute pas dans l’enregistrement
—start-time=00 On démarre immédiatement (00)
—run-time=300 On enregistre pendant 5 min (300 secondes)
—sout file/ts:/home/utilisateur/test.ts On sauvegarde le fichier vidéo

Installation et partage du stockage

  • On branche le périphérique de stockage dans un port USB
  • On crée la table de partition avec cfdisk ou fdisk
  • On formate. Pour des raisons d’efficacité, je formate en ext4 et partage en NFS, mais vous pouvez formater en vfat et partager en CIFS pour exploiter avec un client Windows
mkfs.ext4 /dev/sda1
  • On crée un point de montage pour ce périphérique
mkdir /dev/sda1 /mnt/cam-usb/
  • On modifie le fichier fstab pour que le périphérique soit automatiquement monté au démarrage du serveur en ajoutant cette commande à la fin du fichier :
/dev/sda1 /mnt/usb1/            ext4    defaults,noatime  0       0
  • On relance
mount -a 
  • installation du package nfs-serveur qui va permettre aux clients de monter le répertoire des vidéos
apt-get install nfs-kernel-server
  • Éventuellement
apt-get install rpcbind
  • Ajouter la ligne suivante dans /etc/exports

/mnt/usb1/ 192.168.1.0/24(rw,all_squash,anonuid=1000,anongid=1000,sync,no_subtree_check)

  • puis
service restart nfs-kernel-server
  • relancer :
exportfs ra
  • Verifier que le partage nfs existe
showmount -e
Export list for rpi:
/mnt/usb1 192.168.1.0/24

  • On peut maintenant monter le partage sur le client (votre PC) :

sudo mount 192.168.1.10:/mnt/cam-usb/ /mnt/tmp/

Il est aussi possible de monter son partage en CIFS pour pouvoir facilement y accéder avec une machine Windows

Pour cela éditer le fichier /etc/samba/smb.conf et ajoutez y les lignes suivantes

[Camera]
comment = Partage Samba sur Raspberry Pi
path = /mnt/usb1/
writable = yes
guest ok = yes
guest only = yes
create mode = 0777
directory mode = 0777
share modes = yes

en considérant que votre point de montage pour votre disque dur soit : /mnt/usb1/

Puis en lançant :

service smbd restart

Vous trouverez sur internet de nombreux tutoriels pour installer et utiliser samba
Par exemple : https://constantsandvariables.space/linux/configurer-un-partage-samba-sur-ubuntu-14/

Automatisation de l’enregistrement automat.jpg

Maintenant que tout est installé, on va créer un script qui va enregistrer toutes les heures pour une durée d’une heure, et qui va maintenir un historique de 48 heures

nano /home/cajj/reccam.sh

Pour ma part le format de la caméra est 1280×720 et l’enregistrement sur 2 jours, donne une taille occupée de 25G sur le périphérique

Copiez le texte ci-dessous dans l’éditeur nano en l’adaptant avec vos paramètres (IP, port, répertoires, etc.)

# cajj.co (2016) enregistrement du flux vidéo de la caméra par cycle d'une heure

#!/bin/bash

#initialisation
marque=$(date +%Y%m%d-%H%M)

#purge des fichiers vidéos plus vieux que 48 heures
find /mnt/usb1/ -name "*video*"  -ctime +1 | xargs rm -rf

cvlc rtsp://root:toto@192.168.1.250:8001  --start-time=00 --run-time=3600 --no-sout-audio --sout file/ts:/mnt/usb1/video-${marque}.ts vlc://quit

  • On programme maintenant une tache crontab pour que le script soit lancé toutes les heures

crontab -e
0 */1 * * * /home/cajj/reccam.sh

et Voila

On peut maintenant lire les vidéos d’une heure sur 2 jours

ls /mnt/usb1/
video-20161014-1600.ts  video-20161014-2000.ts  video-20161015-0000.ts  video-20161015-0400.ts  video-20161015-0800.ts  video-20161015-1200.ts  video-20161015-1600.ts  video-20161015-2000.ts  video-20161016-0000.ts  video-20161016-0400.ts  video-$
video-20161014-1300.ts  video-20161014-1700.ts  video-20161014-2100.ts  video-20161015-0100.ts  video-20161015-0500.ts  video-20161015-0900.ts  video-20161015-1300.ts  video-20161015-1700.ts  video-20161015-2100.ts  video-20161016-0100.ts  video-20161016-0500.ts  video-$
video-20161014-1400.ts  video-20161014-1800.ts  video-20161014-2200.ts  video-20161015-0200.ts  video-20161015-0600.ts  video-20161015-1000.ts  video-20161015-1400.ts  video-20161015-1800.ts  video-20161015-2200.ts  video-20161016-0200.ts  video-20161016-0600.ts  video-$
video-20161014-1500.ts  video-20161014-1900.ts  video-20161014-2300.ts  video-20161015-0300.ts  video-20161015-0700.ts  video-20161015-1100.ts  video-20161015-1500.ts  video-20161015-1900.ts  video-20161015-2300.ts  video-20161016-0300.ts  video-20161016-0700.ts  video-$

Et la place occupée

df -h /dev/sda1
Sys. fich.     Taille Util. Dispo Uti% Monté sur
/dev/sda1         55G   27G   26G  51% /mnt/usb1

stockage.jpg

Auteur

Commentaires

Commentaires fermés pour cet article.

← Plus anciens Plus récents →