Enregistrer un Flux RTSP ?
Priigame
-
Reivax962 Messages postés 3672 Date d'inscription Statut Membre Dernière intervention -
Reivax962 Messages postés 3672 Date d'inscription Statut Membre Dernière intervention -
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 :)
A voir également:
- Enregistrer un Flux RTSP ?
- Audacity enregistrer son pc - Guide
- Comment enregistrer un mail - Guide
- Comment enregistrer une conversation - Guide
- Enregistrer son ecran - Guide
- Comment enregistrer une video youtube - Guide
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 :
En remplaçant __FILE__ par le chemin de destination, __FLUX__ par l'adresse RTSP.
Tu peux rajouter
Et pour exécuter une commande externe en C#, tu peux faire ceci :
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
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
Reivax962
Messages postés
3672
Date d'inscription
Statut
Membre
Dernière intervention
1 011
Note supplémentaire, je bossais sur un projet perso qui n'est jamais sorti de chez moi, toi sur un projet industriel tu devras probablement t'assurer de la conformité des licences d'utilisation de VLC...
Priigame
Merci de ta réponse, pour la conformité faudra que je fasse quelque recherche mais par curiosité, ton enregistrement est en arrière plan ou vlc apparait au premier plan ?
Reivax962
Messages postés
3672
Date d'inscription
Statut
Membre
Dernière intervention
1 011
Le paramètre --qt-start-minimized permet de le laisser en arrière plan