IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Problème introuvable pour la récupération d'un flux camera ip


Sujet :

Windows Forms

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 9
    Points : 3
    Points
    3
    Par défaut Problème introuvable pour la récupération d'un flux camera ip
    Bonjour à tous,

    Voilà j'ai un problème lorsque mon programme doit afficher le flux dans la pictureBox.
    Pourtant le code devrait être bon, il ne m'affiche aucune erreur à la compilation ni lorsque je veux afficher le flux.
    Le seul problème est que mon programme bug, il ne répond plus et il doit ce fermer. Un peu comme s'il y avait une boucle infini.
    Je précise bien que ce programme est réalisé sur IX developer (pour réaliser des programmes IHM) et que la camera ip est de la marque Brickcom.
    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    try
    			{
    				HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://192.9.204.110"); 
    				req.Credentials = new NetworkCredential("admin", "admin"); // rtsp://192.9.204.110/channel1
     
    				byte[] buffer = new byte[100000];
    				int read;
    				int total = 0;
    				WebResponse resp = req.GetResponse();
    				Stream stream;
    				using (stream = resp.GetResponseStream())
    				{
    					read = stream.Read(buffer, total, 1000);
    					while (read != 0)
    						total += read;
    				}
     
    				if (stream != null)
    				{
    					MessageBox.Show("stream non null");
    				}
     
    				if (total > 0)
    				{
    					MemoryStream stream1 = new MemoryStream(buffer, 0, total);
    					Image bmp = Image.FromStream(stream1);
    					PictureBox1.Size = bmp.Size;
    					PictureBox1.BackgroundImage = bmp;
    				}
    			}
    			catch (Exception z)
    			{
    				MessageBox.Show(z.ToString());
    			}
    Merci d'avance

  2. #2
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Je viens de tester le même bout de code dans un Visual Studio, même résultat.
    Incompréhensible.
    Merci de m'éclairer !

  3. #3
    Membre chevronné
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 640
    Points : 2 149
    Points
    2 149
    Par défaut
    Le fait que ça marche en changeant d'IDE aurait été surprenant.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    		read = stream.Read(buffer, total, 1000);
    			while (read != 0)
    				total += read;
    Je crois que le problème vient de la , ta variable read aura une valeur et après tu boucles sur cette valeur uniquement , il faudrait relire dans la boucle , du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
         while (read != 0)
                    {
                        total += read;
                        read = stream.Read(buffer, total, 1000);
                    }

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Salut !
    Merci de ta réponse mais du coup read n'est plus assignée avant d'aller dans le while donc ça ne compile pas.
    J'ai modifié le code sans ce problème mais il en apparaît un autre....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    try
                {
                    HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://192.9.204.111/index_mjpg.html");
                    req.Credentials = new NetworkCredential("admin", "admin");
     
                    byte[] buffer = new byte[100000];
                    int read, total = 0;
                    WebResponse resp = req.GetResponse();
                    Stream stream;
                    using (stream = resp.GetResponseStream())
                    {
                        while ((read = stream.Read(buffer, total, 1000)) != 0)
                            total += read;
                    }
     
                    if (stream != null)
                    {
                        MessageBox.Show("stream non null");
                    }
     
                    if (total > 0)
                    {
                        MemoryStream stream1 = new MemoryStream(buffer, 0, total);
                        Image bmp = Image.FromStream(stream1);
                        PictureBox1.Size = bmp.Size;
                        PictureBox1.BackgroundImage = bmp;
                    }
                }
                catch (Exception z)
                {
                    MessageBox.Show(z.ToString());
                }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Image bmp = Image.FromStream(stream1);
    Le paramètre n'est pas valide ! une idée ?
    Pourtant mon lien est bon, il marche dans un browser.

  5. #5
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Il faut que tu trouves l'URL du flux vidéo pour pouvoir le capturer ;-) Là tu captures juste la page HTML...

    Peut-être que le chemin disponible dans le premier post de cette page te sera utile.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Oui je me disais bien aussi que cet URL est un peu bizarre, je sais par contre que celle là marche sur VLC : rtsp://192.9.204.111/channel1
    mais pas dans mon programme ! Il me dit que le préfixe URI n'est pas reconnu...
    Je vais donc essayer de chercher un autre URL avec ton lien (s'il y en existe un autre...).

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    hum.., c'est bien l'URL de cette caméra. C'est en effet du protocole rtsp.
    Existe-il un moyen de récupérer le flux avec rtsp://192.9.204.111/channel1 ?
    PS: c'est du MJPEG.

  8. #8
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Je t'avoue que je n'ai jamais été confronté à ce protocole (RTSP = Real Time Streaming Protocol). Apparemment avec cette librairie tu dois pouvoir arriver à tes fins : http://net7mma.codeplex.com/
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Merci pour ta réponse !
    Mais j'ai trouvé une autre solution !
    Comme VLC peut lire le flux de ma vidéo, j'essaye en ce moment d'ajouter le lecteur VLC dans mon appli comme un controle.
    Cependant je suis tombé sur une erreur que je n'arrive pas du tout à comprendre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    //Set libvlc.dll and libvlccore.dll directory path
    			VlcContext.LibVlcDllsPath = @"C:\Program Files (x86)\VideoLAN\VLC";
    			//Set the vlc plugins directory path
    			VlcContext.LibVlcPluginsPath = @"C:\Program Files (x86)\VideoLAN\VLC\plugins";
     
    			//Set the startup options
    			VlcContext.StartupOptions.IgnoreConfig = true;
    			VlcContext.StartupOptions.LogOptions.LogInFile = true;
    			VlcContext.StartupOptions.LogOptions.ShowLoggerConsole = true;
    			VlcContext.StartupOptions.LogOptions.Verbosity = VlcLogVerbosities.Debug;
     
    			//Initialize the VlcContext
    			VlcContext.CloseAll();
    			VlcContext.Initialize();
    			//rtsp://192.9.204.111/channel1
    			Vlc.DotNet.Core.Medias.MediaBase media = new Vlc.DotNet.Core.Medias.PathMedia(@"C:\Wildlife.wmv");
    			VlcControl1.Media = media;
    			VlcControl1.Play();
    Il m'affiche une erreur lors du PathMedia : La clé donnée était absente du dictionnaire.
    une petite idée ?

  10. #10
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Je ne sais pas c'est assez vague :s

    Essaie avec un autre wrapper, par exemple nVLC. Est-ce que tu as le même problème ?
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  11. #11
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Alors j'ai essayé celui que tu m'a proposé et dans le tuto il propose de mettre ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    IMediaPlayerFactory factory = new MediaPlayerFactory();
    IMedia media = factory.CreateMedia<IMedia>(@"C:\Videos\Movie.wmv");
    IVideoPlayer player = factory.CreatePlayer<IVideoPlayer>();
    player.WindowHandle = panel1.Handle;
    player.Open(media);
    player.Events.MediaEnded += new EventHandler(Events_MediaEnded);
    player.Events.TimeChanged += new EventHandler<TimeChangedEventArgs>(Events_TimeChanged);
    player.Play();
    Mon problème est qu'il ne compile pas avec: Events_MediaEnded, TimeChangedEventArgs et Events_TimeChanged;
    Pour les Events_.... ça me met que ce n'est pas dans le contexte (mais je ne sais pas ce qu'ils représentent)
    et TimeChangedEventArgs, il manque une ref ou using (j'ai pourtant tout fouillé dans les .dll etc rien qui correspond)
    Merci d'avance !

Discussions similaires

  1. [HOOK] Problème(s) pour réaliser le tutoriel sur les HOOKS
    Par Rodrigue dans le forum C++Builder
    Réponses: 13
    Dernier message: 27/07/2016, 18h22
  2. Réponses: 4
    Dernier message: 06/06/2012, 08h56
  3. Réponses: 2
    Dernier message: 01/03/2012, 22h12
  4. Problème pour la récupération d'un ArrayList
    Par pony99 dans le forum Collection et Stream
    Réponses: 15
    Dernier message: 29/12/2011, 00h09
  5. [jsp]problème lors de la récupération de paramètre, textarea
    Par money mark dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 12/06/2005, 22h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo