Les commandes de lecture sont conformes aux normes RTSP et à la spécification de diffusion ONVIF.
Résumé de l’enregistrement
Vous pouvez obtenir un aperçu de tous les enregistrements vidéo disponibles sur le appareil à 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’échelle de temps du premier et du dernier enregistrement, mais vous devez d’abord activer le paramètre Utiliser les configurations des caméras sur l’onglet Paramètres avancés sur le module d’extension Milestone ONVIF Bridge dans le XProtect Management Client.
Créer un proxy pour le service Recherche de l’enregistrement
à 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
> Jeton
– vous devez fournir le jeton de la caméra GUIDSearchScope
> RecordingInformationFilter
– chaî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
et vous obtiendrez 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 3e seconde et de s'arrêter à la 20e seconde.
Par exemple :
PLAY rtsp://basic:basic@bgws-pvv-04: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 ONVIF Bridge prend en charge des valeurs comprises entre [-32 : 32].
PLAY rtsp://basic:basic@bgws-pvv-04: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ôle 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 pour plus de détails.
Ces commandes vous permettent, par exemple, de lire un fichier à l’envers et de changer le point de départ de la lecture.
Voici un exemple d’une ligne de commande typique :
>vlc.exe --rate=-1.0 --start-time=3600 "rtsp://basic:basic@bgws-pvv-04:554/vod/943ffaad-42be-4584-bc2c-c8238ed96373"
Où :
Voici les commandes de lecture pour le lecture multimédia VLC :
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> Début Temps 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 « # » |
bookmarks= |
<string> Liste de signets pour un flux Vous pouvez affecter une liste de signets à un flux dans le formulaire « {name=nom-signet,time=décalage-temps-optionnel,bytes=décalage-bute-optionnel},{...} » |
© 2019 Milestone Systems A/S