SlideShare une entreprise Scribd logo
Retour d’expérience :
Développement d’un système de
vidéoprotection performant
Par Eric Beuque / Ingénieur et chef de projet
Société Jet1oeil
1
Société Jet1oeil
- Création en 2004
- Chemaudin-et-Vaux (25770)
- 2M€ de chiffre d’affaires
- 16 employés
- 2 activités :
- Installation de systèmes de vidéosurveillance sur IP
- Développement d’une solution logicielle de vidéoprotection (depuis 2012)
- GitHub : https://github.com/Jet1oeil/
- OpenDBViewer, OpenHexViewer, Soapero
2
Solution logicielle
- Début en 2012
- Aujourd’hui, 4 développeurs
- Plus de 4000 sites installés/30000 caméras
- 640000 lignes de codes
3
Ligne directrice
- Ergonomie :
- Client final non informaticien, formation simple = gain sur le support client
- Offre commerciale épurée :
- Une licence par flux vidéo, toutes les fonctions incluses. Mises à jour incluses sauf majeures.
- Installation
- Tout en un. Facile à déployer.
- Multi-plateforme :
4
Stack
- Environnements :
- Langages et frameworks :
5
LiveMedia
Solution logicielle
6
Solution logicielle : Serveur
Gestion des périphériques
(caméras, boîtiers de contact
sec, haut-parleurs)
Analyse : Mouvement, Plaque
d’immatriculation
Enregistrement
Evénements/programmations
Extraction vidéo
Utilisateurs
Jet1oeil Server
Solution logicielle
7
Solution logicielle : Client
Lecture/relecture des vidéos
Mosaïques, cycles, multi-écrans
Recherche par zone
Recherche d’événements
Pilotage de périphériques : PTZ,
haut-parleurs, boîtiers de
contacts
Jet1oeil Server
Jet1oeil Viewer
Jet1oeil Mobile
Android / iOS
Solution logicielle
8
Jet1oeil Server
Solution logicielle : Gestion des pannes
Jet1oeil Viewer
Jet1oeil Mobile
Android / iOS
Jet1oeil Monitor Supervision
Watchdog
Détection des pannes
Remontées à un serveur central
Enjeux
Enregistrer un grand nombre de flux vidéos
Avoir un accès rapide aux enregistrements
Extraire des événements de l’analyse vidéo en temps réel
Avoir une recherche rapide des événements
Transmettre les vidéos aux clients de visualisation
Avoir un affichage fluide avec un grand nombre de caméras
9
Fonctionnement général
10
Acquisition des flux
(HTTP, HTTPS, RTSP)
Traitement
(Décodage, Analyse)
Enregistrement
(Disque dur, NAS)
Conversion
(Redimensionnement, encodage)
Serveur
Diffusion
(HTTP, HTTPS)
Viewer
Acquisition
(HTTP, HTTPS)
Décodage
(MJPEG, MxPEG, H.264)
Redimensionnement
Affichage
(DirectX, Qt, OpenGL)
(RGB, YUV)
Recherche d’
événement
Indexation
(Fichiers + BDD)
Aperçu
11
Avantages :
- Contrôle bas niveau (mémoire, SIMD)
- Bibliothèque native en C++
- Application rapide et légère
- Multiplateforme avec CMake
- Démarrage rapide
- Déploiement facile => Pas de JVM
12
Langage de programmation : C++ et CMake
Inconvénients :
- Développement plus long
- Plus fastidieux
- Moins courant sur le marché et moins
enseigné
Premier essai avec Java :
- Trop lent !
- Quand même utilisé pour Android
- Garbage collector pose problème
- Faux multiplateforme
Avantages :
- Complet : Collections, SmartPointer, Thread, GUI, Réseau, XML
- Multi-plateforme
- Supporté par une entreprise
- LGPL et licence commerciale
- Evolution constante
13
Framework : Qt
Comparaison avec Gtk :
- Pas aussi complet
- Pas nativement C++ => Gtkmm
Acquisition des flux : Protocoles
Contrainte : Récupérer les flux vidéos de façon fiable
- HTTP (multipart) :
- TCP uniquement
- MJPEG
- HTTPS :
- Chiffrement peu coûteux (nécessaire pour la sécurité)
- Certificat auto-signé (sécurité limité)
- RTSP :
- UDP par défaut : plus performant et multicast => nécessite qualité de réseau
- TCP dans certains : UDP non supporté, pont radio, analyses lourdes
- H.264
- Accès distant laborieux
- RTSP over SSL :
- Peu de produit compatible
14
Acquisition du flux d’une caméra
15
Acquisition
thread
Stream
Main (HD)
Sub (LD)
Analyse vidéo
(mouvement ou plaque)
Frames
Centralisation dans un thread pour synchronisation, prise de décision et
post-traitement
Enregistrement
Diffusion
client
Traitements vidéos
Contrainte : Assurer les traitements en temps réel
Ne pas ralentir l’acquisition du flux
Traitement :
- Détection de mouvement
- Lecture de plaque d’immatriculation
Exemple : Max 33 ms pour 24 FPS
Pas de GPU
Choix de l’analyse à posteriori trop complexe et risqué
16
Traitements vidéos
17
Décodage Pré-traitement Analyse
H.264 / MJPEG / MxPEG Sous échantillonnage
Zone de l’image
Détection de mouvement
Lecture de plaque
d’immatriculation
Traitements vidéos : Décodage
- FFmpeg (LGPL)
- Tous formats : H.264, MxPEG, MJPEG
- Décodage YUV
- libjpeg-turbo :
- Fonctions avancées pour JPEG
- Décodage en niveau gris, YUV, RGB
- Optimisé via SIMD
- Traitement en niveau de gris suffisant
- Optimisation possible via GPU
18
Traitements vidéos : Décodage
19
MJPEG :
- Flux d’images entières
H.264 :
- Group of Picture (GOP)
- Key frame
- Inter frame
Traitements vidéos : Décodage
20
Image # MJPEG H.264
1 10 ms (107 179 bytes) 14 ms (60 214 bytes)
2 11 ms (107 182 bytes) 6 ms (9 563 bytes)
3 8 ms (107 169 bytes) 5 ms (9 297 bytes)
4 8 ms (107 304 bytes) 5 ms (9 053 bytes)
Total 37 ms 30 ms
Comparaison décodage MJPEG vs H.264 (1280x800)
H.264 (Basé sur des GOP)
Ecart plutôt mineur
Non prévisible, dépend de
la scène
Traitements vidéos : Format image
21
Buffer image de 1920x1080
- RGB32 : 8 294 400 octets
- YUV420 : 3 110 400 octets
- Gain de 5 184 000 octets
- Soit 62,5% de mémoire/image
Choix à faire suivant la sortie voulu :
- Rendu Qt, DirectX => RGB32
- Traitement sur niveau de gris => YUV420
Traitements vidéos : Décodage matériel
Décodage avec CPU
22
Frame Décodage Image décodée TraitementCPU
Frame TraitementCPU
Décodage Image décodéeGPU
Décodage avec GPU
Traitements vidéos : Décodage matériel
En cours de R&D
Utilisation de FFmpeg et VAAPI
Nécessite la chaîne complète
23
Matériel Image Décodage Copie
CPU Intel(M) Core(TM) i5 3450 @ 3.10 Ghz JPEG 2992x2992 15000 μs 0 μs
GPU Intel G45 HD Graphics JPEG 2992x2992 100 μs 25000 μs
Traitements vidéos : Détection de mouvement
Ne nécessite pas une grande qualité d’image
Flux basse résolution : environ 640x360
Sous-échantillonnage : 320x240
Analyse à 6 images/seconde
Segmentation de l’image en 1024 blocs
Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz :
=> Environ 2-8 ms
Optimisation possible via SIMD
24
Traitements vidéos : Lecture de plaque
Nécessite une résolution suffisante
Flux haute résolution
Délimitation d’une zone
Analyse à 6 images/seconde sur mouvement
OpenCV pour les traitements mathématiques
Machine Learning pour OCR
Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz :
=> Environ 20-30 ms
Optimisation possible via IA
25
Diffusion : Conversion
Gestion intelligente du débit envoyé au client
Sélection automatique ou forcée du meilleur flux (Main ou Sub)
Gain de performance coté client
MJPEG
- Redimennement rapide (½, ¼, ⅛) avec libjpeg-turbo
- Diminution des FPS
H.264
- Pas de ré-encodage à ce jour
26
Main Sub
Affichage
Diffusion : Protocole
Envoi HTTP ou HTTPS
- Gestion des ports plus simples
- Simple mais fonctionnel
- Mais pas de multicast
Régulation des images envoyées au client s’il ne suit pas
- Séquence
Débit réseau à prendre en compte : Switch Gibabits / Connexion internet
Evolution prochaine en RTSP
27
Enregistrement
Enregistrement sur disque (WD Purple) ou NAS
SSD non recommandé => Supporte mal l’écriture intensive
Débit des disques à prendre en compte ou réseau
Arrêté du 3 août 2007 : 12 images/seconde en 4 CIF
MJPEG : suppression d’images
28
Western Digital WD10PURZ
- 110 Mb/s
- Cache 64 MB
- 5400 RPM
Indexation : Fichier d’enregistrement
Contraintes : Accès rapide aux enregistrements
Utilisation d’une combinaison de systèmes de stockage de données :
- Fichier binaire
- Ecriture rapide des données
- Organisation en répertoires
- Base de données Sqlite 3
- Stockage des données principales
- Recherche facile via requête SQL
- Cache
- Accès rapide à l’index
Meilleures performances sous Linux
29
Indexation : Fichiers binaires
Stockage des images compressées
- Fichier d’enregistrement :
- Métadonnées de chaque image
- Données compressées de l’image
- Fichier de métadonnées :
- Métadonnées de chaque image
- Offset pour chaque image dans le fichier d’enregistrement
- Fichier d’index :
- Résumé des entêtes pour chaque répertoire => Plage de
temps
30
Indexation : Base de données
Base de données SQLite 3
- Rapide
- Compatible Qt
- Déploiement facile => Pas de serveur
- Gère très bien des centaines de milliers d’enregistrements
- Quelques limites : Transactions, Modifications de la base...
Fragmentation en plusieurs bases
31
Indexation : Mise en cache
Chargement des données principales :
- Liste des fichiers
- Flux
- Plage de temps
Mise à jour en fonction de l’enregistrement et de la purge
32
Indexation : Recherche d’une image
33
Recherche de l’image
dans l’index
Attendu < 33 ms à 24 FPS
Image + Offset trouvé
Lecture du fichier
d’enregistrement
Redimensionnement
(si besoin)
Demande d’une image
(flux, date et heure)
Extraction de l’image
Traitement
Envoi
Affichage
Contrainte : Pouvoir afficher un grand nombre de caméras de façon fluide
34
Très gourmand en
ressource !!!
Affichage
Avoir un matériel suffisant : (Intel i3 => 4 megapixels)
Sélection du flux principal ou secondaire
Redimensionnement à la bonne taille => swscale
- Algorithme Bilinear : meilleure compromis performance/qualité
Moteur de rendu :
- Rendu avec Qt : RGB32
- Rendu en DirectX (Windows) : RGB32 (gain 5-10%)
- Rendu en OpenGL (YUV => RGB via shader)
Gestion intelligente du zoom numérique
Evolution vers le décodage et affichage GPU => Nécessite la chaîne complète
3535
Acquisition
(HTTP, HTTPS)
Décodage
(MJPEG, MxPEG, H.264)
Redimensionnement
Affichage
(DirectX, RGB, YUV)
Fin
Merci !
A l’écoute de vos questions !

Contenu connexe

Tendances

utilisation des core dump sous linux
utilisation des core dump sous linuxutilisation des core dump sous linux
utilisation des core dump sous linux
Thierry Gayet
 
[Café Techno] Archiver pour moins sauvegarder - Juin 2015
[Café Techno] Archiver pour moins sauvegarder - Juin 2015[Café Techno] Archiver pour moins sauvegarder - Juin 2015
[Café Techno] Archiver pour moins sauvegarder - Juin 2015
Groupe D.FI
 
Presentation master
Presentation masterPresentation master
Presentation mastersamir
 
[Café Techno] Les nouveautés de TSM 7.1.3 - Septembre 2015
[Café Techno]  Les nouveautés de TSM 7.1.3 - Septembre 2015[Café Techno]  Les nouveautés de TSM 7.1.3 - Septembre 2015
[Café Techno] Les nouveautés de TSM 7.1.3 - Septembre 2015
Groupe D.FI
 
[Café Techno] Spectrum protect - Présentation des fonctionnalités
[Café Techno] Spectrum protect - Présentation des fonctionnalités[Café Techno] Spectrum protect - Présentation des fonctionnalités
[Café Techno] Spectrum protect - Présentation des fonctionnalités
Groupe D.FI
 
Programmation de systèmes embarqués : Systèmes temps réel et PRUSS
Programmation de systèmes embarqués : Systèmes temps réel et PRUSSProgrammation de systèmes embarqués : Systèmes temps réel et PRUSS
Programmation de systèmes embarqués : Systèmes temps réel et PRUSS
ECAM Brussels Engineering School
 
[Café techno] Spectrum Project - Affronter et gérer la masse de données hétér...
[Café techno] Spectrum Project - Affronter et gérer la masse de données hétér...[Café techno] Spectrum Project - Affronter et gérer la masse de données hétér...
[Café techno] Spectrum Project - Affronter et gérer la masse de données hétér...
Groupe D.FI
 
Zabbix, garder un oeil toujours ouvert
Zabbix, garder un oeil toujours ouvertZabbix, garder un oeil toujours ouvert
Zabbix, garder un oeil toujours ouvert
Look a box
 
Analyse d'un kernel (crash, core) dump
Analyse d'un kernel (crash, core) dumpAnalyse d'un kernel (crash, core) dump
Analyse d'un kernel (crash, core) dump
Gaëtan Trellu
 
Formation linux temps réel - Rennes 14 octobre 2014
Formation linux temps réel  - Rennes 14 octobre 2014Formation linux temps réel  - Rennes 14 octobre 2014
Formation linux temps réel - Rennes 14 octobre 2014
eurogicielgroup
 
Sysadmin Day #5
Sysadmin Day #5Sysadmin Day #5
Linux et le temps réel - Meetup du 15 octobre 2015
Linux et le temps réel - Meetup du 15 octobre 2015Linux et le temps réel - Meetup du 15 octobre 2015
Linux et le temps réel - Meetup du 15 octobre 2015
Christian Charreyre
 
MYSQLDUMP & ZRM COMMUNITY (FR)
MYSQLDUMP & ZRM COMMUNITY (FR)MYSQLDUMP & ZRM COMMUNITY (FR)
MYSQLDUMP & ZRM COMMUNITY (FR)
Cédric P
 
Solutions temps réel sous linux
Solutions temps réel sous linuxSolutions temps réel sous linux
Solutions temps réel sous linux
embedded-linux-bdx
 
LVM "Linux "
LVM  "Linux "LVM  "Linux "
LVM "Linux "
marwa baich
 

Tendances (16)

utilisation des core dump sous linux
utilisation des core dump sous linuxutilisation des core dump sous linux
utilisation des core dump sous linux
 
[Café Techno] Archiver pour moins sauvegarder - Juin 2015
[Café Techno] Archiver pour moins sauvegarder - Juin 2015[Café Techno] Archiver pour moins sauvegarder - Juin 2015
[Café Techno] Archiver pour moins sauvegarder - Juin 2015
 
Presentation master
Presentation masterPresentation master
Presentation master
 
[Café Techno] Les nouveautés de TSM 7.1.3 - Septembre 2015
[Café Techno]  Les nouveautés de TSM 7.1.3 - Septembre 2015[Café Techno]  Les nouveautés de TSM 7.1.3 - Septembre 2015
[Café Techno] Les nouveautés de TSM 7.1.3 - Septembre 2015
 
[Café Techno] Spectrum protect - Présentation des fonctionnalités
[Café Techno] Spectrum protect - Présentation des fonctionnalités[Café Techno] Spectrum protect - Présentation des fonctionnalités
[Café Techno] Spectrum protect - Présentation des fonctionnalités
 
Programmation de systèmes embarqués : Systèmes temps réel et PRUSS
Programmation de systèmes embarqués : Systèmes temps réel et PRUSSProgrammation de systèmes embarqués : Systèmes temps réel et PRUSS
Programmation de systèmes embarqués : Systèmes temps réel et PRUSS
 
[Café techno] Spectrum Project - Affronter et gérer la masse de données hétér...
[Café techno] Spectrum Project - Affronter et gérer la masse de données hétér...[Café techno] Spectrum Project - Affronter et gérer la masse de données hétér...
[Café techno] Spectrum Project - Affronter et gérer la masse de données hétér...
 
Zabbix, garder un oeil toujours ouvert
Zabbix, garder un oeil toujours ouvertZabbix, garder un oeil toujours ouvert
Zabbix, garder un oeil toujours ouvert
 
Analyse d'un kernel (crash, core) dump
Analyse d'un kernel (crash, core) dumpAnalyse d'un kernel (crash, core) dump
Analyse d'un kernel (crash, core) dump
 
Formation linux temps réel - Rennes 14 octobre 2014
Formation linux temps réel  - Rennes 14 octobre 2014Formation linux temps réel  - Rennes 14 octobre 2014
Formation linux temps réel - Rennes 14 octobre 2014
 
Nagios
NagiosNagios
Nagios
 
Sysadmin Day #5
Sysadmin Day #5Sysadmin Day #5
Sysadmin Day #5
 
Linux et le temps réel - Meetup du 15 octobre 2015
Linux et le temps réel - Meetup du 15 octobre 2015Linux et le temps réel - Meetup du 15 octobre 2015
Linux et le temps réel - Meetup du 15 octobre 2015
 
MYSQLDUMP & ZRM COMMUNITY (FR)
MYSQLDUMP & ZRM COMMUNITY (FR)MYSQLDUMP & ZRM COMMUNITY (FR)
MYSQLDUMP & ZRM COMMUNITY (FR)
 
Solutions temps réel sous linux
Solutions temps réel sous linuxSolutions temps réel sous linux
Solutions temps réel sous linux
 
LVM "Linux "
LVM  "Linux "LVM  "Linux "
LVM "Linux "
 

Similaire à Retour d'expérience : gérer des flux vidéos multiples de manière optimisée

Architecture des ordinateurs
Architecture des ordinateursArchitecture des ordinateurs
Architecture des ordinateurs
RMwebsite
 
Isbs slides 2010
Isbs slides 2010Isbs slides 2010
Isbs slides 2010RMwebsite
 
3 Microsoft Advanced Threat Analytics - Genève
3   Microsoft Advanced Threat Analytics - Genève3   Microsoft Advanced Threat Analytics - Genève
3 Microsoft Advanced Threat Analytics - Genève
aOS Community
 
Spécial Infrastructure réseau
Spécial Infrastructure réseauSpécial Infrastructure réseau
Spécial Infrastructure réseau
Philippe JEAN-BAPTISTE, Executive MBA, MSc, MA
 
.NET Microframework: du code, de l&rsquo;électronique, de la robotique
.NET Microframework: du code, de l&rsquo;électronique, de la robotique.NET Microframework: du code, de l&rsquo;électronique, de la robotique
.NET Microframework: du code, de l&rsquo;électronique, de la robotique
Microsoft
 
Compression video pour la diffusion web
Compression video pour la diffusion webCompression video pour la diffusion web
Compression video pour la diffusion web
samir
 
S21 les dernières nouveautés php sous ibm i (zend server 8.5 et zend studio...
S21   les dernières nouveautés php sous ibm i (zend server 8.5 et zend studio...S21   les dernières nouveautés php sous ibm i (zend server 8.5 et zend studio...
S21 les dernières nouveautés php sous ibm i (zend server 8.5 et zend studio...
Gautier DUMAS
 
Altera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitAltera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitWassim Smati
 
Altera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitAltera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitWassim Smati
 
OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...
OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...
OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...Paris Open Source Summit
 
TELESTREAM Vantage - VIDELIO Cap'Ciné
TELESTREAM Vantage - VIDELIO Cap'CinéTELESTREAM Vantage - VIDELIO Cap'Ciné
TELESTREAM Vantage - VIDELIO Cap'Ciné
Benoît Godard
 
Déployer une infrastructure de stockage en quelques minutes – IBM Spectrum Ac...
Déployer une infrastructure de stockage en quelques minutes – IBM Spectrum Ac...Déployer une infrastructure de stockage en quelques minutes – IBM Spectrum Ac...
Déployer une infrastructure de stockage en quelques minutes – IBM Spectrum Ac...
Solutions IT et Business
 
Rmll2010 admin sys-panelgzw-fr
Rmll2010 admin sys-panelgzw-frRmll2010 admin sys-panelgzw-fr
Rmll2010 admin sys-panelgzw-fr
Gaëtan Trellu
 
Arxtech POS Systems 2015 FR
Arxtech POS Systems 2015 FRArxtech POS Systems 2015 FR
Arxtech POS Systems 2015 FR
Arxtech Canada
 
Microcontrôleur
MicrocontrôleurMicrocontrôleur
Microcontrôleur
Peronnin Eric
 
9 - CPU_uhghfhffdttgfffgfdfffghhggfC.ppt
9 - CPU_uhghfhffdttgfffgfdfffghhggfC.ppt9 - CPU_uhghfhffdttgfffgfdfffghhggfC.ppt
9 - CPU_uhghfhffdttgfffgfdfffghhggfC.ppt
josue25052001
 
ObserveIt Produit Information
ObserveIt Produit InformationObserveIt Produit Information
ObserveIt Produit Information
ObserveIT
 
BBL - Monitoring - kyriba
BBL - Monitoring - kyribaBBL - Monitoring - kyriba
BBL - Monitoring - kyriba
Olivier BAZOUD
 

Similaire à Retour d'expérience : gérer des flux vidéos multiples de manière optimisée (20)

Architecture des ordinateurs
Architecture des ordinateursArchitecture des ordinateurs
Architecture des ordinateurs
 
Isbs slides 2010
Isbs slides 2010Isbs slides 2010
Isbs slides 2010
 
3 Microsoft Advanced Threat Analytics - Genève
3   Microsoft Advanced Threat Analytics - Genève3   Microsoft Advanced Threat Analytics - Genève
3 Microsoft Advanced Threat Analytics - Genève
 
Spécial Infrastructure réseau
Spécial Infrastructure réseauSpécial Infrastructure réseau
Spécial Infrastructure réseau
 
.NET Microframework: du code, de l&rsquo;électronique, de la robotique
.NET Microframework: du code, de l&rsquo;électronique, de la robotique.NET Microframework: du code, de l&rsquo;électronique, de la robotique
.NET Microframework: du code, de l&rsquo;électronique, de la robotique
 
Compression video pour la diffusion web
Compression video pour la diffusion webCompression video pour la diffusion web
Compression video pour la diffusion web
 
S21 les dernières nouveautés php sous ibm i (zend server 8.5 et zend studio...
S21   les dernières nouveautés php sous ibm i (zend server 8.5 et zend studio...S21   les dernières nouveautés php sous ibm i (zend server 8.5 et zend studio...
S21 les dernières nouveautés php sous ibm i (zend server 8.5 et zend studio...
 
Altera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitAltera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kit
 
Altera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitAltera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kit
 
OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...
OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...
OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...
 
Fusion io
Fusion ioFusion io
Fusion io
 
TELESTREAM Vantage - VIDELIO Cap'Ciné
TELESTREAM Vantage - VIDELIO Cap'CinéTELESTREAM Vantage - VIDELIO Cap'Ciné
TELESTREAM Vantage - VIDELIO Cap'Ciné
 
Maconfig
MaconfigMaconfig
Maconfig
 
Déployer une infrastructure de stockage en quelques minutes – IBM Spectrum Ac...
Déployer une infrastructure de stockage en quelques minutes – IBM Spectrum Ac...Déployer une infrastructure de stockage en quelques minutes – IBM Spectrum Ac...
Déployer une infrastructure de stockage en quelques minutes – IBM Spectrum Ac...
 
Rmll2010 admin sys-panelgzw-fr
Rmll2010 admin sys-panelgzw-frRmll2010 admin sys-panelgzw-fr
Rmll2010 admin sys-panelgzw-fr
 
Arxtech POS Systems 2015 FR
Arxtech POS Systems 2015 FRArxtech POS Systems 2015 FR
Arxtech POS Systems 2015 FR
 
Microcontrôleur
MicrocontrôleurMicrocontrôleur
Microcontrôleur
 
9 - CPU_uhghfhffdttgfffgfdfffghhggfC.ppt
9 - CPU_uhghfhffdttgfffgfdfffghhggfC.ppt9 - CPU_uhghfhffdttgfffgfdfffghhggfC.ppt
9 - CPU_uhghfhffdttgfffgfdfffghhggfC.ppt
 
ObserveIt Produit Information
ObserveIt Produit InformationObserveIt Produit Information
ObserveIt Produit Information
 
BBL - Monitoring - kyriba
BBL - Monitoring - kyribaBBL - Monitoring - kyriba
BBL - Monitoring - kyriba
 

Plus de Silicon Comté

Digital Apéro - Lancer la V1 de son app sans coder grâce au No Code - Fatouma...
Digital Apéro - Lancer la V1 de son app sans coder grâce au No Code - Fatouma...Digital Apéro - Lancer la V1 de son app sans coder grâce au No Code - Fatouma...
Digital Apéro - Lancer la V1 de son app sans coder grâce au No Code - Fatouma...
Silicon Comté
 
Digital Apéro - Le SEO en 2020
Digital Apéro - Le SEO en 2020Digital Apéro - Le SEO en 2020
Digital Apéro - Le SEO en 2020
Silicon Comté
 
20200219 dasc
20200219 dasc20200219 dasc
20200219 dasc
Silicon Comté
 
Web perf Silicon Comte
Web perf Silicon ComteWeb perf Silicon Comte
Web perf Silicon Comte
Silicon Comté
 
Vente en ligne et données personnelles, les règles actuelles / Digital Apéro ...
Vente en ligne et données personnelles, les règles actuelles / Digital Apéro ...Vente en ligne et données personnelles, les règles actuelles / Digital Apéro ...
Vente en ligne et données personnelles, les règles actuelles / Digital Apéro ...
Silicon Comté
 
[22/03/2016] Conférence : Blockchain, disruption & révolution
[22/03/2016] Conférence : Blockchain, disruption & révolution[22/03/2016] Conférence : Blockchain, disruption & révolution
[22/03/2016] Conférence : Blockchain, disruption & révolution
Silicon Comté
 
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
Silicon Comté
 
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Silicon Comté
 
Développeurs, gagnez du temps avec le cloud / Digital apéro [07/04/2015]
Développeurs, gagnez du temps avec le cloud / Digital apéro [07/04/2015]Développeurs, gagnez du temps avec le cloud / Digital apéro [07/04/2015]
Développeurs, gagnez du temps avec le cloud / Digital apéro [07/04/2015]
Silicon Comté
 
Introduction au langage de programmation Lua / Digital apéro [03/12/2014]
Introduction au langage de programmation Lua / Digital apéro [03/12/2014]Introduction au langage de programmation Lua / Digital apéro [03/12/2014]
Introduction au langage de programmation Lua / Digital apéro [03/12/2014]
Silicon Comté
 
La fibre optique (FTTH) à Besançon, point sur le déploiement / Digital apéro ...
La fibre optique (FTTH) à Besançon, point sur le déploiement / Digital apéro ...La fibre optique (FTTH) à Besançon, point sur le déploiement / Digital apéro ...
La fibre optique (FTTH) à Besançon, point sur le déploiement / Digital apéro ...
Silicon Comté
 
Liste des bénéficiaires de fonds européens en Franche-Comté (TIC)
Liste des bénéficiaires de fonds européens en Franche-Comté (TIC)Liste des bénéficiaires de fonds européens en Franche-Comté (TIC)
Liste des bénéficiaires de fonds européens en Franche-Comté (TIC)
Silicon Comté
 
Evaluation TIC 2015 (annexes techniques)
Evaluation TIC 2015 (annexes techniques)Evaluation TIC 2015 (annexes techniques)
Evaluation TIC 2015 (annexes techniques)
Silicon Comté
 
FEDER - Rapport d'évaluation TIC 2015 (phase 1)
FEDER - Rapport d'évaluation TIC 2015 (phase 1)FEDER - Rapport d'évaluation TIC 2015 (phase 1)
FEDER - Rapport d'évaluation TIC 2015 (phase 1)
Silicon Comté
 
FEDER - Rapport final d'évaluation TIC 2015 (phase 2)
FEDER - Rapport final d'évaluation TIC 2015 (phase 2)FEDER - Rapport final d'évaluation TIC 2015 (phase 2)
FEDER - Rapport final d'évaluation TIC 2015 (phase 2)
Silicon Comté
 
SGAR Franche-Comté - Évaluation tic synthèse (version juin 2009)
SGAR Franche-Comté - Évaluation tic synthèse (version juin 2009)SGAR Franche-Comté - Évaluation tic synthèse (version juin 2009)
SGAR Franche-Comté - Évaluation tic synthèse (version juin 2009)
Silicon Comté
 
Mission d’évaluation et d’expertise du programme Pratic
Mission d’évaluation et d’expertise du programme PraticMission d’évaluation et d’expertise du programme Pratic
Mission d’évaluation et d’expertise du programme Pratic
Silicon Comté
 
CESR - Avis sur Aménagement du territoire (2012)
CESR - Avis sur Aménagement du territoire (2012)CESR - Avis sur Aménagement du territoire (2012)
CESR - Avis sur Aménagement du territoire (2012)
Silicon Comté
 
SDTAN Jura
SDTAN JuraSDTAN Jura
SDTAN Jura
Silicon Comté
 
SDTAN du Jura (synthèse)
SDTAN du Jura (synthèse)SDTAN du Jura (synthèse)
SDTAN du Jura (synthèse)
Silicon Comté
 

Plus de Silicon Comté (20)

Digital Apéro - Lancer la V1 de son app sans coder grâce au No Code - Fatouma...
Digital Apéro - Lancer la V1 de son app sans coder grâce au No Code - Fatouma...Digital Apéro - Lancer la V1 de son app sans coder grâce au No Code - Fatouma...
Digital Apéro - Lancer la V1 de son app sans coder grâce au No Code - Fatouma...
 
Digital Apéro - Le SEO en 2020
Digital Apéro - Le SEO en 2020Digital Apéro - Le SEO en 2020
Digital Apéro - Le SEO en 2020
 
20200219 dasc
20200219 dasc20200219 dasc
20200219 dasc
 
Web perf Silicon Comte
Web perf Silicon ComteWeb perf Silicon Comte
Web perf Silicon Comte
 
Vente en ligne et données personnelles, les règles actuelles / Digital Apéro ...
Vente en ligne et données personnelles, les règles actuelles / Digital Apéro ...Vente en ligne et données personnelles, les règles actuelles / Digital Apéro ...
Vente en ligne et données personnelles, les règles actuelles / Digital Apéro ...
 
[22/03/2016] Conférence : Blockchain, disruption & révolution
[22/03/2016] Conférence : Blockchain, disruption & révolution[22/03/2016] Conférence : Blockchain, disruption & révolution
[22/03/2016] Conférence : Blockchain, disruption & révolution
 
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
Docker ! De la découverte à la mise en production / Digital apéro [19/03/2015]
 
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
 
Développeurs, gagnez du temps avec le cloud / Digital apéro [07/04/2015]
Développeurs, gagnez du temps avec le cloud / Digital apéro [07/04/2015]Développeurs, gagnez du temps avec le cloud / Digital apéro [07/04/2015]
Développeurs, gagnez du temps avec le cloud / Digital apéro [07/04/2015]
 
Introduction au langage de programmation Lua / Digital apéro [03/12/2014]
Introduction au langage de programmation Lua / Digital apéro [03/12/2014]Introduction au langage de programmation Lua / Digital apéro [03/12/2014]
Introduction au langage de programmation Lua / Digital apéro [03/12/2014]
 
La fibre optique (FTTH) à Besançon, point sur le déploiement / Digital apéro ...
La fibre optique (FTTH) à Besançon, point sur le déploiement / Digital apéro ...La fibre optique (FTTH) à Besançon, point sur le déploiement / Digital apéro ...
La fibre optique (FTTH) à Besançon, point sur le déploiement / Digital apéro ...
 
Liste des bénéficiaires de fonds européens en Franche-Comté (TIC)
Liste des bénéficiaires de fonds européens en Franche-Comté (TIC)Liste des bénéficiaires de fonds européens en Franche-Comté (TIC)
Liste des bénéficiaires de fonds européens en Franche-Comté (TIC)
 
Evaluation TIC 2015 (annexes techniques)
Evaluation TIC 2015 (annexes techniques)Evaluation TIC 2015 (annexes techniques)
Evaluation TIC 2015 (annexes techniques)
 
FEDER - Rapport d'évaluation TIC 2015 (phase 1)
FEDER - Rapport d'évaluation TIC 2015 (phase 1)FEDER - Rapport d'évaluation TIC 2015 (phase 1)
FEDER - Rapport d'évaluation TIC 2015 (phase 1)
 
FEDER - Rapport final d'évaluation TIC 2015 (phase 2)
FEDER - Rapport final d'évaluation TIC 2015 (phase 2)FEDER - Rapport final d'évaluation TIC 2015 (phase 2)
FEDER - Rapport final d'évaluation TIC 2015 (phase 2)
 
SGAR Franche-Comté - Évaluation tic synthèse (version juin 2009)
SGAR Franche-Comté - Évaluation tic synthèse (version juin 2009)SGAR Franche-Comté - Évaluation tic synthèse (version juin 2009)
SGAR Franche-Comté - Évaluation tic synthèse (version juin 2009)
 
Mission d’évaluation et d’expertise du programme Pratic
Mission d’évaluation et d’expertise du programme PraticMission d’évaluation et d’expertise du programme Pratic
Mission d’évaluation et d’expertise du programme Pratic
 
CESR - Avis sur Aménagement du territoire (2012)
CESR - Avis sur Aménagement du territoire (2012)CESR - Avis sur Aménagement du territoire (2012)
CESR - Avis sur Aménagement du territoire (2012)
 
SDTAN Jura
SDTAN JuraSDTAN Jura
SDTAN Jura
 
SDTAN du Jura (synthèse)
SDTAN du Jura (synthèse)SDTAN du Jura (synthèse)
SDTAN du Jura (synthèse)
 

Retour d'expérience : gérer des flux vidéos multiples de manière optimisée

  • 1. Retour d’expérience : Développement d’un système de vidéoprotection performant Par Eric Beuque / Ingénieur et chef de projet Société Jet1oeil 1
  • 2. Société Jet1oeil - Création en 2004 - Chemaudin-et-Vaux (25770) - 2M€ de chiffre d’affaires - 16 employés - 2 activités : - Installation de systèmes de vidéosurveillance sur IP - Développement d’une solution logicielle de vidéoprotection (depuis 2012) - GitHub : https://github.com/Jet1oeil/ - OpenDBViewer, OpenHexViewer, Soapero 2
  • 3. Solution logicielle - Début en 2012 - Aujourd’hui, 4 développeurs - Plus de 4000 sites installés/30000 caméras - 640000 lignes de codes 3
  • 4. Ligne directrice - Ergonomie : - Client final non informaticien, formation simple = gain sur le support client - Offre commerciale épurée : - Une licence par flux vidéo, toutes les fonctions incluses. Mises à jour incluses sauf majeures. - Installation - Tout en un. Facile à déployer. - Multi-plateforme : 4
  • 5. Stack - Environnements : - Langages et frameworks : 5 LiveMedia
  • 6. Solution logicielle 6 Solution logicielle : Serveur Gestion des périphériques (caméras, boîtiers de contact sec, haut-parleurs) Analyse : Mouvement, Plaque d’immatriculation Enregistrement Evénements/programmations Extraction vidéo Utilisateurs Jet1oeil Server
  • 7. Solution logicielle 7 Solution logicielle : Client Lecture/relecture des vidéos Mosaïques, cycles, multi-écrans Recherche par zone Recherche d’événements Pilotage de périphériques : PTZ, haut-parleurs, boîtiers de contacts Jet1oeil Server Jet1oeil Viewer Jet1oeil Mobile Android / iOS
  • 8. Solution logicielle 8 Jet1oeil Server Solution logicielle : Gestion des pannes Jet1oeil Viewer Jet1oeil Mobile Android / iOS Jet1oeil Monitor Supervision Watchdog Détection des pannes Remontées à un serveur central
  • 9. Enjeux Enregistrer un grand nombre de flux vidéos Avoir un accès rapide aux enregistrements Extraire des événements de l’analyse vidéo en temps réel Avoir une recherche rapide des événements Transmettre les vidéos aux clients de visualisation Avoir un affichage fluide avec un grand nombre de caméras 9
  • 10. Fonctionnement général 10 Acquisition des flux (HTTP, HTTPS, RTSP) Traitement (Décodage, Analyse) Enregistrement (Disque dur, NAS) Conversion (Redimensionnement, encodage) Serveur Diffusion (HTTP, HTTPS) Viewer Acquisition (HTTP, HTTPS) Décodage (MJPEG, MxPEG, H.264) Redimensionnement Affichage (DirectX, Qt, OpenGL) (RGB, YUV) Recherche d’ événement Indexation (Fichiers + BDD)
  • 12. Avantages : - Contrôle bas niveau (mémoire, SIMD) - Bibliothèque native en C++ - Application rapide et légère - Multiplateforme avec CMake - Démarrage rapide - Déploiement facile => Pas de JVM 12 Langage de programmation : C++ et CMake Inconvénients : - Développement plus long - Plus fastidieux - Moins courant sur le marché et moins enseigné Premier essai avec Java : - Trop lent ! - Quand même utilisé pour Android - Garbage collector pose problème - Faux multiplateforme
  • 13. Avantages : - Complet : Collections, SmartPointer, Thread, GUI, Réseau, XML - Multi-plateforme - Supporté par une entreprise - LGPL et licence commerciale - Evolution constante 13 Framework : Qt Comparaison avec Gtk : - Pas aussi complet - Pas nativement C++ => Gtkmm
  • 14. Acquisition des flux : Protocoles Contrainte : Récupérer les flux vidéos de façon fiable - HTTP (multipart) : - TCP uniquement - MJPEG - HTTPS : - Chiffrement peu coûteux (nécessaire pour la sécurité) - Certificat auto-signé (sécurité limité) - RTSP : - UDP par défaut : plus performant et multicast => nécessite qualité de réseau - TCP dans certains : UDP non supporté, pont radio, analyses lourdes - H.264 - Accès distant laborieux - RTSP over SSL : - Peu de produit compatible 14
  • 15. Acquisition du flux d’une caméra 15 Acquisition thread Stream Main (HD) Sub (LD) Analyse vidéo (mouvement ou plaque) Frames Centralisation dans un thread pour synchronisation, prise de décision et post-traitement Enregistrement Diffusion client
  • 16. Traitements vidéos Contrainte : Assurer les traitements en temps réel Ne pas ralentir l’acquisition du flux Traitement : - Détection de mouvement - Lecture de plaque d’immatriculation Exemple : Max 33 ms pour 24 FPS Pas de GPU Choix de l’analyse à posteriori trop complexe et risqué 16
  • 17. Traitements vidéos 17 Décodage Pré-traitement Analyse H.264 / MJPEG / MxPEG Sous échantillonnage Zone de l’image Détection de mouvement Lecture de plaque d’immatriculation
  • 18. Traitements vidéos : Décodage - FFmpeg (LGPL) - Tous formats : H.264, MxPEG, MJPEG - Décodage YUV - libjpeg-turbo : - Fonctions avancées pour JPEG - Décodage en niveau gris, YUV, RGB - Optimisé via SIMD - Traitement en niveau de gris suffisant - Optimisation possible via GPU 18
  • 19. Traitements vidéos : Décodage 19 MJPEG : - Flux d’images entières H.264 : - Group of Picture (GOP) - Key frame - Inter frame
  • 20. Traitements vidéos : Décodage 20 Image # MJPEG H.264 1 10 ms (107 179 bytes) 14 ms (60 214 bytes) 2 11 ms (107 182 bytes) 6 ms (9 563 bytes) 3 8 ms (107 169 bytes) 5 ms (9 297 bytes) 4 8 ms (107 304 bytes) 5 ms (9 053 bytes) Total 37 ms 30 ms Comparaison décodage MJPEG vs H.264 (1280x800) H.264 (Basé sur des GOP) Ecart plutôt mineur Non prévisible, dépend de la scène
  • 21. Traitements vidéos : Format image 21 Buffer image de 1920x1080 - RGB32 : 8 294 400 octets - YUV420 : 3 110 400 octets - Gain de 5 184 000 octets - Soit 62,5% de mémoire/image Choix à faire suivant la sortie voulu : - Rendu Qt, DirectX => RGB32 - Traitement sur niveau de gris => YUV420
  • 22. Traitements vidéos : Décodage matériel Décodage avec CPU 22 Frame Décodage Image décodée TraitementCPU Frame TraitementCPU Décodage Image décodéeGPU Décodage avec GPU
  • 23. Traitements vidéos : Décodage matériel En cours de R&D Utilisation de FFmpeg et VAAPI Nécessite la chaîne complète 23 Matériel Image Décodage Copie CPU Intel(M) Core(TM) i5 3450 @ 3.10 Ghz JPEG 2992x2992 15000 μs 0 μs GPU Intel G45 HD Graphics JPEG 2992x2992 100 μs 25000 μs
  • 24. Traitements vidéos : Détection de mouvement Ne nécessite pas une grande qualité d’image Flux basse résolution : environ 640x360 Sous-échantillonnage : 320x240 Analyse à 6 images/seconde Segmentation de l’image en 1024 blocs Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz : => Environ 2-8 ms Optimisation possible via SIMD 24
  • 25. Traitements vidéos : Lecture de plaque Nécessite une résolution suffisante Flux haute résolution Délimitation d’une zone Analyse à 6 images/seconde sur mouvement OpenCV pour les traitements mathématiques Machine Learning pour OCR Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz : => Environ 20-30 ms Optimisation possible via IA 25
  • 26. Diffusion : Conversion Gestion intelligente du débit envoyé au client Sélection automatique ou forcée du meilleur flux (Main ou Sub) Gain de performance coté client MJPEG - Redimennement rapide (½, ¼, ⅛) avec libjpeg-turbo - Diminution des FPS H.264 - Pas de ré-encodage à ce jour 26 Main Sub Affichage
  • 27. Diffusion : Protocole Envoi HTTP ou HTTPS - Gestion des ports plus simples - Simple mais fonctionnel - Mais pas de multicast Régulation des images envoyées au client s’il ne suit pas - Séquence Débit réseau à prendre en compte : Switch Gibabits / Connexion internet Evolution prochaine en RTSP 27
  • 28. Enregistrement Enregistrement sur disque (WD Purple) ou NAS SSD non recommandé => Supporte mal l’écriture intensive Débit des disques à prendre en compte ou réseau Arrêté du 3 août 2007 : 12 images/seconde en 4 CIF MJPEG : suppression d’images 28 Western Digital WD10PURZ - 110 Mb/s - Cache 64 MB - 5400 RPM
  • 29. Indexation : Fichier d’enregistrement Contraintes : Accès rapide aux enregistrements Utilisation d’une combinaison de systèmes de stockage de données : - Fichier binaire - Ecriture rapide des données - Organisation en répertoires - Base de données Sqlite 3 - Stockage des données principales - Recherche facile via requête SQL - Cache - Accès rapide à l’index Meilleures performances sous Linux 29
  • 30. Indexation : Fichiers binaires Stockage des images compressées - Fichier d’enregistrement : - Métadonnées de chaque image - Données compressées de l’image - Fichier de métadonnées : - Métadonnées de chaque image - Offset pour chaque image dans le fichier d’enregistrement - Fichier d’index : - Résumé des entêtes pour chaque répertoire => Plage de temps 30
  • 31. Indexation : Base de données Base de données SQLite 3 - Rapide - Compatible Qt - Déploiement facile => Pas de serveur - Gère très bien des centaines de milliers d’enregistrements - Quelques limites : Transactions, Modifications de la base... Fragmentation en plusieurs bases 31
  • 32. Indexation : Mise en cache Chargement des données principales : - Liste des fichiers - Flux - Plage de temps Mise à jour en fonction de l’enregistrement et de la purge 32
  • 33. Indexation : Recherche d’une image 33 Recherche de l’image dans l’index Attendu < 33 ms à 24 FPS Image + Offset trouvé Lecture du fichier d’enregistrement Redimensionnement (si besoin) Demande d’une image (flux, date et heure) Extraction de l’image Traitement Envoi
  • 34. Affichage Contrainte : Pouvoir afficher un grand nombre de caméras de façon fluide 34 Très gourmand en ressource !!!
  • 35. Affichage Avoir un matériel suffisant : (Intel i3 => 4 megapixels) Sélection du flux principal ou secondaire Redimensionnement à la bonne taille => swscale - Algorithme Bilinear : meilleure compromis performance/qualité Moteur de rendu : - Rendu avec Qt : RGB32 - Rendu en DirectX (Windows) : RGB32 (gain 5-10%) - Rendu en OpenGL (YUV => RGB via shader) Gestion intelligente du zoom numérique Evolution vers le décodage et affichage GPU => Nécessite la chaîne complète 3535 Acquisition (HTTP, HTTPS) Décodage (MJPEG, MxPEG, H.264) Redimensionnement Affichage (DirectX, RGB, YUV)
  • 36. Fin Merci ! A l’écoute de vos questions !