Laden...

Bild von IP-Cam direkt in PictureBox anzeigen lassen

Erstellt von DisTurbed vor 10 Jahren Letzter Beitrag vor 10 Jahren 9.987 Views
Thema geschlossen
D
DisTurbed Themenstarter:in
10 Beiträge seit 2013
vor 10 Jahren
Bild von IP-Cam direkt in PictureBox anzeigen lassen

Hallo miteinander.

Ich hab mich heute neu in diesem Forum angemolden, weil ich im Internet (Google und co.) keine brauchbare Lösung zu meinem Problem gefunden habe und ich schlicht und einfach eine Erklärung benötige.

private void button1_Click(object sender, EventArgs e)
        {
            string sourceURL = "http://192.168.8.48/";
            byte[] buffer = new byte[100000];
            int read, total = 0;

            // HTTP Request
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(sourceURL);

            // Login
            string userName = "admin";
            string password = "";
            req.Credentials = new NetworkCredential(userName, password); 

            // Rückmeldung
            WebResponse resp = req.GetResponse();

            // HTTP Stream
            Stream stream = resp.GetResponseStream();

            // Daten vom Stream lesen
            while ((read = stream.Read(buffer, total, 1000)) != 0)
            {
                total += read;
            }

            //Bild bekommen
            Bitmap bmp = (Bitmap)Bitmap.FromStream(new MemoryStream(buffer, 0, total));
            pictureBox1.Image = ByteToImage(buffer);

Nun meine Frage, was mache ich falsch? Ich kann das Programm ausführen, jedoch kriege ich immer eine Fehlermeldung, sobald ich auf den Button klicke, durch welchen das Bild abgerufen werden sollte.

Ich hoffe ihr versteht meine Frage und könnt mir helfen 😉

Freundliche Grüsse
DisTurbed

B
142 Beiträge seit 2007
vor 10 Jahren
D
DisTurbed Themenstarter:in
10 Beiträge seit 2013
vor 10 Jahren

@Björn

Was verstehst du nicht? Ich hab mir Punkt 5 durchgelesen bevor ich gepostet hatte 🙂

B
142 Beiträge seit 2007
vor 10 Jahren

@Björn

Was verstehst du nicht? Ich hab mir Punkt 5 durchgelesen bevor ich gepostet hatte 😃

  1. Problem genau beschreiben - inkl. genauer Fehlermeldung - und konkrete Fragen stellen

Ich sehe keine Fehlermeldung und raten wird hier auch keiner..

D
DisTurbed Themenstarter:in
10 Beiträge seit 2013
vor 10 Jahren

Oh sorry hab ich irgendwie nicht korrekt eingefügt.

Hier die Fehlermeldung:

Fehlermeldung:
System.ArgumentException: Ungültiger Parameter.
bei System.Drawing.Image.FromStream(Stream stream, Boolean useEmbeddedColorManagement, Boolean validateImageData)
bei System.Drawing.Image.FromStream(Stream stream)
bei IPCam.Form1.button1_Click(Object sender, EventArgs e) in c:\Users\rido\Desktop\C#\Projects\IPCam\IPCam\Form1.cs:Zeile 49.
bei System.Windows.Forms.Control.OnClick(EventArgs e)
bei System.Windows.Forms.Button.OnClick(EventArgs e)
bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
bei System.Windows.Forms.Control.WndProc(Message& m)
bei System.Windows.Forms.ButtonBase.WndProc(Message& m)
bei System.Windows.Forms.Button.WndProc(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Dies erscheint, nachdem ich im angehängten Bild auf _Details _klickte.

B
142 Beiträge seit 2007
vor 10 Jahren

Und was sagt uns die Fehlermeldung? Das aus deinem Buffer bzw. MemoryStream kein Bild erstellt werden kann bzw. keins enthält.

ich denke auch nicht, dass es direkt unter

string sourceURL = "http://192.168.8.48/";

kein Bild gibt sondern eher eine Html Seite

T
708 Beiträge seit 2008
vor 10 Jahren

So ist es. Also entweder den Code nach dem Bild durchsuchen oder alternativ ein Webcontrol statt der Picturebox verwenden.
Irgendwo müsste ich aber auch noch einen Code zum runterladen des Bildes rumliegen haben...

D
DisTurbed Themenstarter:in
10 Beiträge seit 2013
vor 10 Jahren

Hm ja durch diese URL wird man auf die Steuerungssoftware der Kamera geleitet. Sprich man sieht dort was die IP-Cam überwacht.
Dies hab ich nun geändert, hab aber immer noch dieselben Fehler 🙁

URL ist jetzt aber: ht****tp://192.168.8.48/eng/liveView.cgi

Und wie könnte ich das mit dem Buffer hinkriegen? Bin noch nicht so das Genie in C#.

Übrigens besten Dank für eure Bemühungen!

B
142 Beiträge seit 2007
vor 10 Jahren

Das mit dem Buffer ist korrekt. Nur liegt hinter der URL kein Bild! Da wird eine HTML-Seite sein, die auf ein Bild verweist / anzeigt / verlinkt. Mehr können wir dir nicht helfen.

D
DisTurbed Themenstarter:in
10 Beiträge seit 2013
vor 10 Jahren

Ja das ist richtig. Ziel der Aufgabe wäre eben die dort angezeigte Videoaufnahme im C# zu streamen.

Hab jetzt auch rausgefunden wie man wenigstens ein Bild von, zum Beispiel Google Bilder über die URL anzeigen lassen kann.
Dies ist ja schon mal ein Anfang.

Im Anhang noch der Stream der vorherigen URL.

709 Beiträge seit 2008
vor 10 Jahren

Hallo DisTurbed,

welche URL steht denn in der Adressleiste, wenn du einen Rechtsklick auf das Kamerabild machst und dann auf "Bild in neuem Tab öffnen" klickst?

Oder ist das kein Bild sondern etwas anderes?

Gruß
pinki

16.834 Beiträge seit 2008
vor 10 Jahren

Es wäre ratsam, wenn Du erst mal erörterst, mit welcher Technolgie Du das einzeigen willst oder musst.
Offensichtlich fehlen Dir jegliche Grundinformationen, wie sowas funktioniert. Und im Prinzip ist es Deine Aufgabe herauszufinden, welche Möglichkeiten Du überhaupt hast.

Du hast hier nämlich im Web-Bereich einen Thread gestartet, der Windows Forms Code zeigt und anschließend verweist Du wiederum auf HTML Inhalte, die wiederum Flash oder ActiveX nutzen.

Finde also erst mal raus, was die Kamera, bzw. die Kamera-Software von Haus aus bietet.
Bei vielen Kameras kann man sich nämlich aufschalten bzw. erhält ein ActiveX-Objekt zurück, das man dann entweder in Forms oder in HTML einbetten kann.
Nur die Grundinformationen zu holen ist eben Deine Aufgabe, nicht unsere.

Hinweis von herbivore vor 10 Jahren

Thread nach Grafik&Sound verschoben

D
DisTurbed Themenstarter:in
10 Beiträge seit 2013
vor 10 Jahren

@pinki

Hallo 🙂 Wenn ich Rechtsklick auf die Aufnahme mache passiert gar nichts.

@Abt

Ja ich kann dir höchstens sagen was für ein Kameratyp die Cam ist und welcher Hersteller. Mehr weiss ich leider auch nicht. Und wie du bereits gesagt hast, fehlt mir einiges an Grundkentnissen.

Hersteller: TrendNet
Modell: TV-IP672PI

M
184 Beiträge seit 2012
vor 10 Jahren

10 Sekunden googeln:

VLC rtsp://IPADDRESS:554/play1.sdp
JPEG ht
tp://IPADDRESS/image/jpeg.cgi
MJPEG http://IPADDRESS/mjpeg.cgi
MJPEG ht
tp://IPADDRESS/GetData.cgi
MJPEG ht****tp://IPADDRESS/video/mjpg.cgi

Quelle: Connecting to your TrendNet IP camera

D
DisTurbed Themenstarter:in
10 Beiträge seit 2013
vor 10 Jahren

yeah danke Morphiex

Das habe ich nicht gefunden tut mir Leid...
Nun kommt keine Fehlermeldung mehr, wenn ich den Stream hingegen in der Picture Box einblenden will, gibt das Programm keine Rückmeldung.

M
184 Beiträge seit 2012
vor 10 Jahren

Was lädtst du denn herunter?
JPEG = Schnappschuss, also ein Bild
MJPEG = Endlosstream! Wenn du versuchst diesen herunterzuladen, lädt er quasi unendlich lange.
MJPEG

D
DisTurbed Themenstarter:in
10 Beiträge seit 2013
vor 10 Jahren

MJPEG. Das Ziel ist es die Aufnahme im C# Projekt wiederzugeben.
JPEG funktioniert soweit 😁

M
184 Beiträge seit 2012
vor 10 Jahren

Dann kannst du aber nicht einfach so ein Bild herunterladen, sondern musst schon das MJPEG-Protokoll implementieren.

Ganz einfach ausgedrückt:

  1. Download starten
  2. Daten in Buffer schreiben
  3. Bild aus dem Buffer parsen (Stichwort: boundary, siehe Wikipedia-Artikel)
  4. Bild darstellen
  5. Zurück zu Schritt 2

Oder du suchst dir einen fertigen MJPEG-Decoder
z.B. http://mjpeg.codeplex.com (habe ich allerdings nicht getestet)

D
DisTurbed Themenstarter:in
10 Beiträge seit 2013
vor 10 Jahren

yeah danke. Sowas kann mir bereits weiterhelfen 🙂

Den Link werde ich mir morgen auch mal noch anschauen!
Werde mich wieder melden.

Danke und bis später!

Hinweis von herbivore vor 10 Jahren

Den Rest solltest du jetzt alleine hinbekommen. Du weiß jetzt ja auch, dass du alle nötigen Informationen (leicht) im Netz findest, erst recht, da du natürlich nicht der bist, der vor dem Problem steht, siehe auch [Hinweis] Wie poste ich richtig? Punkt 1.1.

Thema geschlossen