Utiliser les clients ONVIF pour voir les flux vidéo
Les clients ONVIF peuvent être de nombreuses choses différentes, qui vont de systèmes de surveillance personnalisés avancés à des lecteurs média basiques.
Si vous avez appliqué un masque de confidentialité permanent à votre vidéo, vous ne pourrez pas diffuser la vidéo à partir d’un client ONVIF.
Cette rubrique fournit des exemples de connexion au Milestone Open Network Bridge.
Utiliser un client réseau vidéo pour voir un flux en direct
Cet exemple décrit comment installer le ONVIF Device Manager et le configurer pour diffuser des vidéos en direct depuis une installation XProtect.
Le ONVIF Device Manager est un client réseau vidéo en source ouverte gratuit de iDeviceDesign conforme aux normes ONVIF. L’outil facilite la découverte et la visualisation des vidéos provenant de caméras compatibles ONVIF sur un réseau. Cependant, le ONVIF Device Manager diffuse uniquement des vidéos en direct. Vous ne pouvez pas non plus capturer et enregistrer les données vidéo du flux.
Le ONVIF Device Manager ne prend pas en charge le codec FIPS 140-2 ou H.265.
Avant de commencer, vous devez disposer des informations suivantes :
- Les identifiants de connexion utilisateur créés pour Milestone Open Network Bridge
- L’adresse IP ou le nom de l’ordinateur où est installé le Milestone Open Network Bridge
Pour installer le ONVIF Device Manager, procédez comme suit :
- Allez sur le site ONVIF Device Manager de Sourceforge (https://sourceforge.net/projects/onvifdm/) puis téléchargez et exécutez l’assistant d’installation. Vous pouvez installer le ONVIF Device Manager sur n’importe quel ordinateur.
- Une fois l’installation terminée, une icône apparaît sur votre bureau. Double-cliquez sur l’icône pour démarrer le ONVIF Device Manager.
- Quand vous démarrez le ONVIF Device Manager, il découvre automatiquement les périphériques conformes à ONVIF sur le réseau. Mais il est possible qu’il ne découvre pas Milestone Open Network Bridge.
- S’il le découvre, passez à l’étape 6
- S’il ne le découvre pas, ajoutez le pont manuellement. Passez à l’étape 4
- Pour ajouter un Milestone Open Network Bridge, cliquez sur AJOUT.
- Dans la boîte de dialogue Ajouter un périphérique, dans le champ URI, indiquez le nom ou l’adresse IP de l’ordinateur où est installé Milestone Open Network Bridge, et le numéro de port ONVIF. Par exemple, la chaîne devrait prendre cette forme : http://[Adresse IP]:580/onvif/device_service.
- Lorsque vous avez ajouté le pont, il est disponible en bas de la liste Périphériques. Sélectionnez-le.
- Saisissez les identifiants de connexion de l’utilisateur standard qui a été créé pour le client ONVIF en haut de la liste. S’il s’agit d’un utilisateur Windows, vous devez saisir le domaine\nom d’utilisateur.
Utiliser un lecteur média pour afficher un flux vidéo
Cet exemple décrit comment utiliser le lecteur média VLC pour récupérer et afficher un flux vidéo en direct ou une vidéo enregistrées depuis une caméra dans une installation XProtect.
Le lecteur média VLC est un lecteur multimédia en source ouverte gratuit de VideoLan qui prend en charge différents protocoles de diffusion, dont RTSP. Par exemple, l’utilisation du lecteur média VLC est utile quand vous souhaitez un moyen très rapide de vous connecter à une caméra ou simplement pour tester la connexion à une caméra.
Quand vous vous connectez à une caméra pour afficher une vidéo enregistrée, le Milestone Open Network Bridge diffuse les séquences vidéo en commençant par la première.
Avant de commencer, obtenez les informations suivantes auprès de la personne qui gère l’installation XProtect :
- Les identifiants de connexion du compte utilisateur affecté au Milestone Open Network Bridge
- L’adresse IP ou le nom de l’ordinateur où est installé le Milestone Open Network Bridge
En outre, selon le schéma que vous utilisez, vous avez besoin des informations suivantes :
-
Si vous utilisez rtsp://[rtsp_server]:554/live/[camera_id]
Vous avez ensuite besoin du GUID du périphérique à partir duquel vous souhaitez diffuser la vidéo
Le GUID de la caméra est disponible dans Management Client. Pour trouver le GUID, sélectionnez le serveur d’enregistrement où la caméra a été ajoutée puis sélectionnez la caméra. Cliquez sur l’onglet Infos, appuyez longuement sur CTRL sur votre clavier puis cliquez sur l’aperçu vidéo de la caméra.
-
Si vous utilisez rtsp://[rtsp_server]:554/live/[camera_id]/[stream_number]
Vous avez ensuite besoin du numéro du flux. Ceci est une valeur numérique comprise entre 0 et 15.
-
Si vous utilisez rtsp://[rtsp_server]:554/live/[camera_id]/[stream_id]
Vous avez ensuite besoin de l’ID du flux. Il s’agit du GUID qui identifie le flux dans le VMS XProtect.
Les GUID de mise en oeuvre de diffusion multiflux du VMS XProtect actuels qui identifient les flux sont fixés à :
-
28dc44c3-079e-4c94-8ec9-60363451eb40 - pour le flux 0
-
28dc44c3-079e-4c94-8ec9-60363451eb41 - pour le flux 1
-
...
-
28dc44c3-079e-4c94-8ec9-60363451eb4f - pour le flux 15
-
Cette description est basée sur VLC 2.2.4 pour Windows.
Pour installer le lecteur média VLC et le connecter à un XProtect, suivez ces étapes :
- Accédez à https://www.videolan.org/vlc/, puis téléchargez le programme d’installation pour le lecteur de média VLC.
- Exécutez l’installateur et suivez les instructions à chaque étape.
- Sur la barre d’outils, cliquez sur Média, puis sélectionnez Ouvrir le flux réseau.
- Dans la boîte de dialogue Ouvrir média, saisissez la chaîne RTSP suivante. Remplacez les variables entre crochets [Adresse IP Milestone Open Network Bridge] et [GUID caméra] par les informations correctes :
- Pour voir un flux vidéo en direct, saisissez rtsp://[Milestone Open Network Bridge IP Address]:554/live/[Camera GUID]
- Pour voir une vidéo enregistrée, saisissez rtsp://[Milestone Open Network Bridge IP Address]:554/vod/[Camera GUID]
- Cliquez sur Lecture, puis saisissez le nom d’utilisateur et le mot de passe du compte utilisateur qui a été ajouté au Milestone Open Network Bridge.
Gérer la lecture de vidéos
Les commandes de lecture sont conformes aux normes RTSP et à la spécification de diffusion ONVIF (https://www.onvif.org/profiles/specifications/).
Résumé de l’enregistrement
Vous pouvez obtenir un aperçu de tous les enregistrements vidéo disponibles sur le périphérique à l’aide de la commande GetRecordingSummary
. Cela n’est pas nécessaire, mais cela permet d’avoir des informations utiles avant d’effectuer une recherche.
Vous pouvez utiliser GetRecordingSummary
et/ou GetMediaAttributes
pour obtenir l’horodatage du premier et du dernier enregistrement, mais vous devez d’abord activer le paramètre Utiliser les configurations des caméras sur le plug-in Milestone Open Network Bridge dans le XProtect Management Client.
Créer un proxy pour le service RecordingSearch
à l’aide du point de terminaison de service renvoyé par GetServices
. Créer des objets de demande et de réponse, puis appeler GetRecordingSummary
.
SearchBindingProxy searchProxy( &soapSearch );
std::string searchEndpoint = "http://" + host + "/onvif/recording_search_service";
_tse__GetRecordingSummary tse__GetRecordingSummary;
_tse__GetRecordingSummaryResponse tse__GetRecordingSummaryResponse;
result = searchProxy.GetRecordingSummary( searchEndpoint.c_str(), NULL,
&tse__GetRecordingSummary, &tse__GetRecordingSummaryResponse );
Recherche d’enregistrement
La méthode Service de recherche FindRecordings
lance une recherche asynchrone sur la caméra. FindRecordings
retourne un jeton qui référence les résultats de la recherche. Même s’il n’y a qu’un enregistrement disponible, une recherche est le moyen approprié pour obtenir une référence de l’enregistrement concerné.
Envoyez une requête FindRecordings
avec les paramètres obligatoires suivants :
SearchScope
>IncludedSources
>Token
– vous devez fournir le jeton de la caméra GUIDSearchScope
>RecordingInformationFilter
– schaîne avec les paramètres suivants :timestamp
(au format UTC)maxTimeBefore
(l’heure avant l’estampille temporelle demandée, en millisecondes)maxCountBefore
(le nombre maximum de pistes avant l’estampille temporelle demandée)maxTimeAfter
(L’heure après l’estampille temporelle demandée, en millisecondes)maxCountAfter
(le nombre maximum de pistes après l’estampille temporelle demandée)
Par exemple :
boolean(//Track[TrackType = “Video”]),2016-12-06T08:07:43Z,99999999,20,99999999,20
Vous recevrez une réponse avec SearchToken
, qui est unique pour les critères de recherche.
Transmettez le SearchToken
à GetRecordingSearchResults
pour obtenir une liste comportant toutes les pistes correspondant aux critères de recherche.
Lancement de la lecture
Lors de la lecture de vidéos, la vitesse par défaut est 1 (lecture normale en direction avant).
La lecture est lancée au moyen de la méthode RTSP PLAY. Il est possible de spécifier une plage. Si aucune plage n’est spécifiée, le flux est diffusé à partir du début et jusqu’à la fin ou, s’il est mis en pause, il reprend à l’endroit où il s’était arrêté. Dans cet exemple, « Range: npt=3-20 » demande au serveur RTSP de commencer la lecture à la troisième seconde et de s’arrêter à la 20e seconde.
Par exemple :
PLAY rtsp://user:1234@test01:554/vod/943ffaad-42be-4584-bc2c-c8238ed96373 RTSP/1.0
CSeq: 123
Session: 12345678
Require: onvif-replay
Range: npt=3-20
Rate-Control: no
Lecture arrière
Les périphériques ONVIF peuvent PARFOIS prendre en charge la lecture arrière. La lecture arrière est indiquée par un champ « Échelle » doté d’une valeur négative dans l’en-tête. Par exemple, pour lire un fichier en arrière sans perdre de données, une valeur de -1,0 sera utilisée.
Le Milestone Open Network Bridge prend en charge des valeurs comprises entre [-32 : 32].
PLAY rtsp://user:1234@test01:554/vod/943ffaad-42be-4584-bc2c-c8238ed96373 RTSP/1.0
CSeq: 123
Session: 12345678
Require: onvif-replay
Range: clock=20090615T114900.440Z
Rate-Control: no
Scale: -1.0
Changement de vitesse
La vitesse est contrôlée par l’en-tête de commande du débit RTSP. Si « Rate-Control=yes » (Contrôle du débit = oui), le serveur contrôle la vitesse de lecture. Le flux est diffusé en temps réel à l’aide des mécanismes temporels RTP standard. Si « Rate-Control=non » (Contrôle du débit = non), le client contrôle la vitesse de lecture. La lecture à débit contrôlé est généralement utilisée uniquement par les clients spécifiques non-ONVIF, car ils n’ont pas spécifié « Rate-Control=no » (Contrôle du débit = non).
Pour contrôler la vitesse de lecture dans un client, utilisez les commandes fournies. Par exemple, avec le lecteur multimédia VLC, sélectionnez Lecture > Vitesse > Plus vite ou Moins vite. Ceci augmente ou réduit la vitesse de 0,5.
Plus vite (fin) et Moins vite (fin) change la vitesse de 0,25.
Gérer la lecture sur le lecture multimédia VLC en saisissant des lignes de commande
Vous pouvez gérer la lecture de vidéos sur le lecteur multimédia VLC en utilisant des lignes de commande. Veuillez vous reporter à l’aide sur les lignes de commande VLC (https://wiki.videolan.org/VLC_command-line_help/) pour plus de détails.
Ces commandes vous permettent, par exemple, de lire un fichier à l’envers et de changer le point de début de la lecture.
Voici un exemple d’une ligne de commande typique :
>vlc.exe --rate=-1.0 --start-time=3600 "rtsp://user:1234@test01:554/vod/943ffaad-42be-4584-bc2c-c8238ed96373"
Où :
- Le débit est le paramètre d’échelle et de vitesse
- Start-time (l’horaire de début) est exprimé en secondes après le début sur la base de données
Voici les commandes de lecture pour le lecteur multimédia VLC :
Code | Que puis-je faire avec le code ? |
---|---|
input-repeat= | <entier [-2147483648 .. 2147483647]> Répétition des entrées Nombre de répétitions de la même entrée |
start-time= | <float> Heure de début Le flux démarrera à cette position (en secondes) |
stop-time= | <float> Heure d’arrêt Le flux s’arrêtera à cette position (en secondes) |
run-time= | <float> Durée d’exécution Le flux sera diffusé sur cette durée (en secondes) |
input-fast-seek no-input-fast-seek | Recherche rapide (désactivée par défaut) Accorde la priorité à la vitesse plutôt qu’à la précision pendant la recherche |
rate= | <float> Vitesse de lecture Ceci définie la vitesse de lecture (vitesse nominale de 1,0) |
input-list= | <string> Liste d’entrées Vous pouvez fournir une liste d’entrées séparées par des virgules, qui seront concaténées après l’entrée normale |
input-slave= | <string> Esclave d’entrée (expérimental) Ceci vous permet de diffuser à partir de plusieurs entrées en même temps. Cette fonction est expérimentale et certains formats ne sont pas pris en charge. Utilisez une liste d’entrées séparées par un « # » |