...

Puis-je utiliser les commandes CGI HTTP pour déclencher et télécharger des instantanés haute résolution ?

19 mai 2026 Par Han

J'ai perdu des semaines à tirer RTSP1 des flux vidéo sur 4G2 juste pour capturer une image. Le coût de la bande passante était douloureux. Puis j'ai découvert les commandes CGI d'instantané.

Oui, vous pouvez utiliser les commandes CGI HTTP4 pour déclencher et télécharger des instantanés haute résolution depuis la plupart des caméras professionnelles Caméras PTZ5. En envoyant une simple requête HTTP GET au serveur web intégré de la caméra, vous obtenez instantanément une image JPEG en pleine résolution, sans ouvrir de flux vidéo ni utiliser de NVR6.

Commandes CGI HTTP pour la capture d'instantanés haute résolution à partir de caméras PTZ Commandes CGI HTTP pour la capture d'instantanés haute résolution à partir de caméras PTZ

Ci-dessous, je détaille les méthodes exactes, les paramètres et les conseils pratiques que j'utilise chaque jour pour aider les intégrateurs comme vous à construire des flux de travail d'instantanés fiables et économes en données sur les réseaux 4G et standard. Allons-y.

Existe-t-il une chaîne d'URL simple pour récupérer directement un instantané 4K pour mon tableau de bord web personnalisé ?

J'ai vu trop d'intégrateurs compliquer les choses. Ils construisent des décodeurs RTSP, installent FFmpeg3, et épuisent les ressources du serveur. Tout ce dont ils avaient besoin, c'était d'une seule URL.

Oui, la plupart des caméras PTZ industrielles exposent un point de terminaison d'URL CGI unique qui renvoie une image JPEG en pleine résolution. Vous collez cette URL dans la source d'image de votre tableau de bord, et la caméra livre un instantané 4K directement sous forme de données binaires dans la réponse HTTP. Aucun décodage vidéo n'est nécessaire.

URL CGI simple pour un instantané 4K sur un tableau de bord web personnalisé URL CGI simple pour un instantané 4K sur un tableau de bord web personnalisé

Comment fonctionne réellement l'URL CGI d'instantané

La caméra exécute un petit serveur web dans son firmware. Lorsque vous envoyez une requête HTTP GET à un chemin spécifique, le processeur de signal d'image (ISP) de la caméra capture l'image actuelle du capteur du flux principal. Il encode cette image dans un fichier JPEG. Ensuite, il vous renvoie le fichier dans le corps de la réponse HTTP.

Voici une structure d'URL typique :

http://192.168.1.100:80/cgi-bin/snapshot.cgi?channel=1&res=max

Laissez-moi décomposer chaque partie :

Composant d'URL Ce qu'il fait Valeur d'exemple
http://192.168.1.100 Adresse IP de la caméra sur votre réseau L'IP locale ou publique de votre caméra
:80 Port HTTP (par défaut 80) Peut être changé en 8080, 443, etc.
/cgi-bin/snapshot.cgi Le chemin du point de terminaison CGI pour les instantanés Varie légèrement selon le fabricant
?channel=1 Sélectionne le canal vidéo à capturer 1 pour les caméras PTZ à objectif unique
&res=max Force la sortie à la résolution maximale Certaines caméras utilisent &subtype=0 à la place

L'intégrer dans votre tableau de bord

Pour un tableau de bord Web personnalisé, vous pouvez utiliser cette URL directement dans une balise HTML <img> étiquette :

<img src="http://admin:password@192.168.1.100/cgi-bin/snapshot.cgi?channel=1&res=max" />

Chaque fois que la page se charge ou est actualisée, le navigateur envoie une nouvelle requête GET. La caméra renvoie un instantané frais. Pas de plugins. Pas de lecteur vidéo. Juste une image.

Flux principal vs. Flux secondaire

C'est là que beaucoup de gens font des erreurs. Les caméras ont généralement deux flux :

  • Flux principal (subtype=0) : Résolution complète. C'est votre image 4K ou 4MP. Utilisez-la pour les instantanés.
  • Flux secondaire (subtype=1) : Basse résolution. Ceci est pour la prévisualisation en direct sur des réseaux faibles. N'utilisez pas cela pour des instantanés haute résolution.

Si votre commande CGI tire du flux secondaire par défaut, vous obtiendrez une image floue de 640×480. Vérifiez toujours le paramètre. Forcez-le à utiliser le flux principal.

Authentification dans l'URL

La plupart des caméras nécessitent un nom d'utilisateur et un mot de passe. Vous pouvez les passer en ligne :

http://admin:YourPassword@192.168.1.100/cgi-bin/snapshot.cgi?channel=1

Cela fonctionne pour des tests rapides. Mais pour les tableaux de bord de production, je recommande fortement d'utiliser l'authentification Digest dans votre code backend à la place. Mettre des mots de passe dans des URL en clair est un risque de sécurité, surtout sur les réseaux 4G publics.

Une note rapide sur la taille de la réponse

Un seul instantané JPEG 4K fait généralement entre 1,5 Mo et 4 Mo, selon la complexité de la scène. Un parking la nuit avec peu de détails pourrait faire 1,5 Mo. Un chantier de construction animé en plein jour pourrait atteindre 3,5 Mo. C'est toujours beaucoup moins qu'un clip vidéo de 5 secondes, qui pourrait facilement faire 10-20 Mo. Pour les déploiements 4G, cette différence est très importante.

Puis-je planifier la commande CGI pour capturer une image toutes les 60 secondes sans utiliser de NVR ?

Des clients m'ont posé exactement cette question des dizaines de fois. Ils veulent une surveillance en accéléré sur des sites distants alimentés à l'énergie solaire. Ils ne veulent pas acheter de NVR. Ils ne veulent pas enregistrer de vidéo 24h/24 et 7j/7. Ils veulent juste une image par minute.

Oui, vous pouvez planifier des commandes CGI d'instantanés à n'importe quel intervalle en utilisant des outils externes comme n8n7, cron8 jobs, ou des scripts Python. La caméra n'a pas besoin de NVR. Votre plateforme d'automatisation envoie la requête HTTP sur une minuterie, reçoit l'image et la stocke ou la transfère où vous le souhaitez.

Capture d'instantanés CGI planifiée toutes les 60 secondes sans NVR Capture d'instantanés CGI planifiée toutes les 60 secondes sans NVR

Pourquoi se passer du NVR pour les instantanés planifiés ?

Un NVR est conçu pour l'enregistrement vidéo continu. C'est excessif si tout ce dont vous avez besoin, ce sont des instantanés périodiques. Sur un site solaire 4G, un NVR signifie également une consommation d'énergie plus élevée, plus de matériel susceptible de tomber en panne et une consommation de données plus importante. Un simple appel CGI planifié élimine toute cette complexité.

Trois façons de planifier des instantanés CGI

Méthode 1 : Flux de travail n8n (sans code)

Si vous utilisez déjà n8n pour l'automatisation, c'est la voie la plus simple :

  1. Ajoutez un Nœud Cron. Réglez-le pour qu'il se déclenche toutes les 60 secondes.
  2. Ajoutez un Nœud HTTP Request. Pointez-le vers l'URL de l'instantané CGI de votre caméra.
  3. Définissez le type de réponse sur Données binaires.
  4. Ajoutez un Nœud Google Drive (ou S3, FTP, etc.) pour télécharger l'image binaire.

L'ensemble du flux de travail prend environ 5 minutes à construire. Aucun codage requis.

Méthode 2 : Script Python avec requêtes

Pour les développeurs qui préfèrent le code :

import requests

Méthode 3 : Cron Linux + cURL

Sur n'importe quel serveur Linux ou Raspberry Pi :

* * * * * curl --digest -u admin:password -o /snapshots/$(date +\%Y\%m\%_\%H\%M\%S).jpg "http://192.168.1.100/cgi-bin/snapshot.cgi?channel=1&res=max"

Ceci s'exécute chaque minute. Chaque image obtient un nom de fichier avec horodatage unique.

Paramètres critiques pour les déploiements 4G

Paramètres Valeur recommandée Pourquoi c'est important
Délai d'attente HTTP 10–15 secondes La négociation 4G est lente. Des délais d'attente courts entraînent des requêtes échouées.
Intervalle de requête ≥ 30 secondes Des requêtes rapides surchargent le processeur de la caméra sur les modules 4G.
Résolution d'image Flux principal (max) Le sous-flux donne des images floues ne convenant pas à la vérification.
Logique de nouvelle tentative 2 nouvelles tentatives avec un délai de 5s Les chutes de signal 4G sont courantes. Les nouvelles tentatives empêchent les lacunes de données.
Budget d'alimentation Vérifier la capacité du panneau solaire Chaque requête CGI réveille le processeur. Trop de requêtes vident la batterie.

Qu'en est-il de la planification côté caméra ?

Certaines caméras disposent d'une fonction de planification d'instantanés intégrée dans leur micrologiciel. Vous pouvez configurer la caméra pour qu'elle prenne une photo toutes les N secondes et la pousse automatiquement vers un serveur FTP. Cela fonctionne, mais vous offre moins de contrôle. Vous ne pouvez pas facilement modifier la destination, ajouter des métadonnées ou déclencher une logique conditionnelle. Pour la plupart des intégrateurs avec lesquels je travaille, la méthode de planification externe est plus flexible et plus fiable.

La commande CGI permet-elle une dénomination de fichier personnalisée basée sur l'ID de la caméra et l'horodatage ?

J'ai appris cela à mes dépens lors d'un projet impliquant 30 caméras. Chaque instantané était nommé snapshot.jpg. J'avais 30 fichiers qui se remplaçaient mutuellement. Ce fut une mauvaise journée.

La commande CGI elle-même ne contrôle pas le nom du fichier. La caméra renvoie des données d'image brutes dans la réponse HTTP. Votre script de réception ou votre plateforme d'automatisation est responsable de la dénomination du fichier. Cela vous donne un contrôle total pour inclure l'ID de la caméra, l'horodatage, l'emplacement ou toute balise personnalisée dans le nom du fichier.

Nommage personnalisé des fichiers pour les instantanés CGI avec ID de caméra et horodatage Nommage personnalisé des fichiers pour les instantanés CGI avec ID de caméra et horodatage

Comprendre la réponse

Lorsque vous envoyez une requête CGI pour un instantané, la caméra ne vous envoie pas un fichier avec un nom. Elle envoie des données binaires brutes avec un type de contenu image/jpeg. Pensez-y comme si la caméra vous tendait une photo imprimée sans étiquette au dos. C'est à vous de décider ce que vous écrivez dessus.

C'est en fait une bonne chose. Cela signifie que vous avez une liberté totale sur votre convention de nommage.

Construire une convention de nommage

Pour les déploiements multi-caméras, je recommande une structure de nommage comme celle-ci :

{SiteID}_{CameraID}_{YYYYMMDD}_{HHMMSS}.jpg

Exemple : SiteA_CAM03_20250116_143022.jpg

Cela vous indique exactement quel site, quelle caméra et quelle heure. Lorsque vous avez des milliers d'images dans un dossier, cette structure facilite la recherche et le tri.

Implémentation en Python

Voici comment je gère cela dans un projet réel :

import requests

Ajouter des métadonnées au-delà du nom de fichier

Pour les cas d'utilisation avancés, vous pouvez également intégrer des métadonnées directement dans le fichier JPEG à l'aide de balises EXIF. La bibliothèque piexif de Python vous permet d'écrire des coordonnées GPS, des numéros de série d'appareil photo ou des commentaires personnalisés dans le fichier image lui-même. Ceci est utile lorsque les images sont partagées entre équipes ou téléchargées dans des systèmes de gestion d'actifs.

Structure de dossiers pour les déploiements importants

Lorsque vous utilisez plus de 20 caméras prenant des instantanés chaque minute, vous générez beaucoup de fichiers. Je les organise comme suit :

/snapshots/.

Cela permet de garder les choses propres. Chaque caméra a son propre dossier. Chaque jour a un sous-dossier. Les anciens dossiers peuvent être archivés ou supprimés automatiquement avec un script simple.

Pourquoi cela est important pour votre entreprise

Si vous êtes un intégrateur livrant un tableau de bord de surveillance à votre client final, le nommage professionnel des fichiers n'est pas une option. Votre client attend des enregistrements organisés et consultables. Lorsqu'il demande “ Montre-moi ce que la caméra 3 a vu mardi dernier à 14h30 ”, vous devez trouver cette image en quelques secondes. Une bonne convention de nommage rend cela possible.

L'interface CGI est-elle protégée par une authentification Digest pour empêcher l'accès non autorisé aux images ?

J'ai une fois testé une caméra d'une marque bon marché. L'URL de l'instantané CGI fonctionnait sans aucun mot de passe. N'importe qui sur le réseau pouvait récupérer des images en direct. C'est une faille de sécurité sérieuse.

Oui, les caméras PTZ de qualité professionnelle protègent leur interface CGI avec l'authentification Digest9 par défaut. Cela signifie que chaque requête HTTP doit inclure des informations d'identification valides hachées avec un nonce fourni par le serveur. Sans le nom d'utilisateur et le mot de passe corrects, la caméra renvoie une erreur 401 Unauthorized et aucune donnée d'image n'est envoyée.

Authentification Digest protégeant l'interface d'instantané CGI Authentification Digest protégeant l'interface d'instantané CGI

Authentification de base vs. Authentification Digest

Il existe deux méthodes d'authentification HTTP courantes utilisées par les caméras. Comprendre la différence est essentiel pour la sécurité, en particulier sur les réseaux publics 4G.

Fonctionnalité Authentification de base l'authentification Digest
Transmission du mot de passe Encodé en Base64 (facilement décodable) Haché avec MD5 et un nonce unique
Risque d'attaque par rejeu Élevé — même chaîne à chaque fois Faible — le nonce change à chaque requête
HTTPS requis ? Oui, absolument Recommandé mais plus sûr sans HTTPS que Basic
Prise en charge de la caméra Modèles plus anciens/bon marché La plupart des caméras de qualité professionnelle
Facilité d'implémentation Très simple Légèrement plus complexe mais bien pris en charge

Comment fonctionne l'authentification Digest

Voici le flux simplifié :

  1. Votre script envoie une requête GET à l'URL CGI sans informations d'identification.
  2. La caméra répond avec 401 Non autorisé et inclut un en-tête WWW-Authenticate . Cet en-tête contient un nonce (une chaîne aléatoire unique) et le domaine.
  3. Votre script prend le nom d'utilisateur, le mot de passe, le nonce, l'URI de la requête et la méthode HTTP. Il les hache ensemble en utilisant MD5.
  4. Votre script renvoie la requête, cette fois avec le hachage dans l'en-tête Autorisation en-tête.
  5. La caméra vérifie le hachage. S'il correspond, la caméra renvoie l'image instantanée.

Le point clé est que votre mot de passe réel ne transite jamais sur le réseau. Seul un hachage transite. Et comme le nonce change à chaque fois, même si quelqu'un capture le hachage, il ne peut pas le réutiliser.

Implémentation de l'authentification Digest dans votre code

En Python, la bibliothèque requêtes gère tout cela automatiquement :

from requests.auth import HTTPDigestAuth

Dans n8n, vous définissez le type d'authentification sur “Authentification Digest” dans les paramètres du nœud HTTP Request. Entrez votre nom d'utilisateur et votre mot de passe. n8n gère l'échange de nonce en coulisses.

Dans cURL :

curl --digest -u admin:VotreMotDePasseSécurisé "http://192.168.1.100/cgi-bin/snapshot.cgi?channel=1&res=max" -o snapshot.jpg

HTTPS : la couche supplémentaire à ne pas négliger

L'authentification Digest protège votre mot de passe contre la lecture pendant le transit. Mais elle ne chiffre pas les données de l'image elles-mêmes. Si quelqu'un intercepte votre trafic 4G, il ne peut pas voler votre mot de passe, mais il peut voir l'image JPEG transmise.

Pour une protection complète, activez HTTPS sur la caméra. Cela chiffre tout : l'échange d'authentification, les données de l'image et tous les en-têtes. La plupart des caméras professionnelles prennent en charge les certificats SSL auto-signés. Vous pouvez également télécharger un certificat approprié si votre déploiement l'exige.

Liste de contrôle de sécurité pratique pour l'accès CGI à distance

Voici ce que je recommande pour chaque déploiement 4G :

  • Changez immédiatement le mot de passe administrateur par défaut.
  • Activez l'authentification Digest. Désactivez l'authentification Basic si la caméra le permet.
  • Activez HTTPS. Acceptez l'avertissement de certificat auto-signé dans vos scripts en définissant verify=False en Python (ou utilisez un certificat approprié).
  • Utilisez un VPN ou le transfert de port avec une liste blanche d'adresses IP. N'exposez pas le port CGI de la caméra directement à Internet.
  • Créez un compte utilisateur dédié “instantané uniquement” avec des autorisations limitées. N'utilisez pas le compte administrateur pour les scripts automatisés.
  • Changez les mots de passe tous les 90 jours, surtout pour les déploiements accessibles publiquement.

La sécurité n'est pas glamour. Mais un seul incident d'accès non autorisé peut détruire votre réputation auprès d'un client. Cela vaut les 30 minutes supplémentaires de configuration.

Conclusion

Les commandes CGI HTTP vous offrent un moyen rapide, léger et prêt pour l'automatisation de capturer et télécharger des instantanés haute résolution à partir de caméras PTZ — pas de NVR, pas de flux vidéo, pas de bande passante gaspillée.


1. Comprendre le protocole de streaming en temps réel utilisé pour contrôler les serveurs de streaming multimédia. ︎↩︎ 2. Comprendre la technologie de réseau cellulaire à large bande de quatrième génération et ses caractéristiques pour la transmission de données. ︎↩︎ 3. FFmpeg est un puissant framework multimédia pour le décodage, l'encodage et le traitement audio et vidéo. ︎↩︎ 4. Comprendre la norme Common Gateway Interface qui permet aux serveurs Web d'exécuter des programmes externes et de retourner du contenu dynamique. ︎↩︎ 5. Apprendre les caméras pan-tilt-zoom et leurs capacités de surveillance à distance. ︎↩︎ 6. Apprendre comment un enregistreur vidéo réseau stocke et gère les enregistrements vidéo des caméras IP. ︎↩︎ 7. n8n est un outil d'automatisation de flux de travail qui permet de connecter divers services et d'automatiser des processus sans code ou avec peu de code. ︎↩︎ 8. Cron est un planificateur de tâches basé sur le temps dans les systèmes d'exploitation Unix, utile pour automatiser les tâches périodiques. ︎↩︎ 9. Apprendre le schéma d'authentification digest HTTP qui utilise le hachage MD5 et les nonces pour sécuriser les identifiants. ︎↩︎

Prêt à sécuriser votre projet ?

Obtenez des spécifications techniques complètes, des prix de gros et une solution personnalisée pour vos besoins spécifiques en matière de PTZ et d'énergie solaire.

Réponse dans les 24 heures

Vous avez besoin d'une solution solaire sur mesure pour votre projet ?

Consultez nos guides techniques revus par des experts ou demandez un plan d'installation personnalisé. Notre équipe d'ingénieurs vous aide à trouver le kit d'alimentation solaire idéal pour vos besoins spécifiques en matière de caméras PTZ.