Diffuser depuis IP cam C #

J’ai le code suivant qui ne fonctionne pas. Mon lien camUrl fonctionne si je charge dans Firefox et diffuse depuis ma caméra, mais rien n’est affiché dans ma Picturebox au moment de l’exécution. Des idées pourquoi?

  public Thread _camThread; private ssortingng camUrl = "http://my-domain-ip:2080/videostream.cgi?user=admin&pwd=password"; public HttpWebRequest webReq; public WebResponse webRes; public Stream sr; private void btnStart_Click(object sender, EventArgs e) { if (_camThread == null) _camThread = new Thread(new ThreadStart(RunCam)); _camThread.Start(); } private void RunCam() { try { webReq = (HttpWebRequest)WebRequest.Create(camUrl); webReq.AllowWriteStreamBuffering = true; webReq.Timeout = 20000; using (webRes = webReq.GetResponse()) { while ((sr = webRes.GetResponseStream()) != null) { image.Image = Image.FromStream(sr); } } } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void btnStop_Click(object sender, EventArgs e) { if (_camThread.IsAlive) { _camThread.Abort(); _camThread = null; } } 

Il semble que votre boucle de lecture du stream de réponses soit incorrecte. Vous ne recevez jamais qu’un seul stream d’une réponse et il y aura plusieurs images.

Il est probable que vous ne pouvez pas transmettre directement le stream de réponses à Image.FromStream – les images sont probablement codées dans une réponse en plusieurs parties qui sépare les images avec des délimiteurs de texte. Vous pouvez en apprendre plus sur le format des réponses en plusieurs parties à la RFC2046 .

 using (webRes = webReq.GetResponse()) { using (sr = webRes.GetResponseStream()) { // continuously read images from the response stream until error while (true) { try { // note: the line below probably won't work, you may need to parse // the next image from the multi-part response stream manually image.Image = Image.FromStream(sr); // if the above doesn't work, then do something like this: // var imageBytes = ParseNextImage(sr); // var memoryStream = new MemoryStream(imageBytes); // image.Image = Image.FromStream(memoryStream); } catch(Exception e) { Console.WriteLine("Aborting read from response stream due to error {0}", e); break; } } } } 

Le camUrl retourne-t- camUrl une image?

Essayez de déboguer sr = webRes.GetResponseStream() et s’il n’est pas nul, essayez image.Invalidate() ou image.Update()

Plus d’informations sur invalidate, update et refresh