Enregistrer un Flux RTSP ?
Priigame
-
Reivax962 Messages postés 3742 Statut Membre -
Reivax962 Messages postés 3742 Statut Membre -
Bonjour,
Je travail sur un projet de Supervision industriel, et ai à disposition des caméras IP utilisant le protocole RTSP.
Je cherche à enregistrer le flux vidéo mais les applications disponibles ne conviennent pas pour une optimisation.
Je souhaiterais savoir si en C# (seul langue que je connais un peu) permet d'enregistrer ce flux.
Je pensais à une interface proche des logiciels de record (Petite fenêtre avec durée d'enregistrement, un bouton record et une sélection parmi mes caméras installer).
J'aimerais donc savoir si c'est tout simplement réalisable, et si possible comment enregistrer ce flux vidéo.
Merci d'avance :)
Je travail sur un projet de Supervision industriel, et ai à disposition des caméras IP utilisant le protocole RTSP.
Je cherche à enregistrer le flux vidéo mais les applications disponibles ne conviennent pas pour une optimisation.
Je souhaiterais savoir si en C# (seul langue que je connais un peu) permet d'enregistrer ce flux.
Je pensais à une interface proche des logiciels de record (Petite fenêtre avec durée d'enregistrement, un bouton record et une sélection parmi mes caméras installer).
J'aimerais donc savoir si c'est tout simplement réalisable, et si possible comment enregistrer ce flux vidéo.
Merci d'avance :)
1 réponse
-
Bonjour,
En amateur j'ai fait quelque chose de ce genre, en l'occurrence c'était pour enregistrer les flux RTSP télé de la freebox.
C'était il y a déjà bien longtemps (2010...), les choses ont peut-être évolué côté c#, qui n'acceptait pas les flux RTSP à l'époque, mais mon programme fonctionne toujours au poil.
Je n'ai pas directement enregistré en C# les flux, j'ai utilisé le C# pour commander le programme VLC via sa CLI qui contient tout ce qu'il faut pour enregistrer, et encoder à la volée les flux vidéos, y compris avec le choix de la piste audio (pour les vidéos multi-langue).
Mon programme fonctionnait aussi bien sous Linux que sous Windows. Le tout est d'appeler l'exécutable de VLC, suivant là où il est installé (idéalement il faut rendre ce chemin paramétrable dans ton appli), avec les paramètres suivants :-vvv --sout "#standard{access=file,mux=ps,dst=__FILE__}" --qt-start-minimized "__FLUX__"
En remplaçant __FILE__ par le chemin de destination, __FLUX__ par l'adresse RTSP.
Tu peux rajouter--run-time=__DUREE__
pour enregistrer pendant une durée prédéfinie (en secondes), mais ça s'applique plus à mon cas qu'au tien je pense. De même pour--audio-track __CANAL__
.
Et pour exécuter une commande externe en C#, tu peux faire ceci :using System.Diagnostics; [...] Process vlc = new Process(); vlc.StartInfo.FileName = "chemin_complet_vers_vlc.exe"; vlc.StartInfo.Arguments = "chaine d'argument telle que définie plus haut"; vlc.Start();
Et tu vas pouvoir contrôler ce processus avec les boutons que tu souhaites mettre en œuvre.
Voilà, j'imagine que tu espérais une réponse qui ne fasse pas appel à un programme externe, mais ça, ça fonctionne :)
Xavier