cgi auslesen

Für allgemeine Fragen zur Programmierung mit PureBasic.
LCD
Beiträge: 107
Registriert: 23.01.2008 13:13
Wohnort: Wien

cgi auslesen

Beitrag von LCD »

Hallo. Ich will meine IP-Kamera auslesen, und stoße da auf ein Problem.

Code: Alles auswählen

URL$="http://xxx.xxx.xxx.xxx:port/anon/mjpg.cgi"
*memoryBuffer=AllocateMemory(10000000)

If InitNetwork()
  MessageRequester("Netwoek","Init OK")
  *Puffer=ReceiveHTTPMemory(URL$)
  MessageRequester(Str(*Puffer),Str(MemorySize(*Puffer)))
  
  FreeMemory(*Puffer)
EndIf
Im Browser sehe ich die bewachte Räumlichleit (Das Haus steht in einer anderen Ortschaft). Normalerweise müßte ich mit dem Programm den Inlalt der CGI-Datei in ein Memorybuffer hineinbekommen, aber wenn ich es starte, bleibt er bei ReceiveHTTPMemory(URL$) stecken und tut nichts weiter. Woran liegt das?
Sorry wenn es eine dumme Frage ist. Mit PureBasic kenn ich mich gut aus, aber mit CGI und Webtransfer habe ich nie etwas gemacht, bis jetzt.
PB 4.61Beta1 32/64Bit. AMD FX6100, 8 GB RAM, ATI Radeon 5750, Win7 64 (64 bit ist mist weil 16-Bit Programme wie MakeTZX nicht mehr darauf funktionieren).
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: cgi auslesen

Beitrag von NicTheQuick »

Vermutlich ist das ein Videostream und ReceiveHTTPMemory() hört niemals auf, weil der Stream eben nicht endet. Oder bist du sicher, dass da nur ein JPG oder ähnliches übertragen wird?
Und was ist mit Login-Daten? Oder ist deine Kamera ohne Passwort im Netzwerk erreichbar? :shock:
LCD
Beiträge: 107
Registriert: 23.01.2008 13:13
Wohnort: Wien

Re: cgi auslesen

Beitrag von LCD »

NicTheQuick hat geschrieben:Vermutlich ist das ein Videostream und ReceiveHTTPMemory() hört niemals auf, weil der Stream eben nicht endet. Oder bist du sicher, dass da nur ein JPG oder ähnliches übertragen wird?
Und was ist mit Login-Daten? Oder ist deine Kamera ohne Passwort im Netzwerk erreichbar? :shock:
Ja, es ist ein Videostream, aber die Frames sollten doch einzeln übertragen werden, oder? Zumindest will Firefox manchmal eine CGI speichern, und darin finden sich die Bildinformationen nach dem Header als JPG.
Das soll für einen Freund sein. Ich habe ihm schon gesagt, dass da ein Passwort reingehört, sonst kann jeder da reinsehen (deshalb poste ich die IP nicht).
PB 4.61Beta1 32/64Bit. AMD FX6100, 8 GB RAM, ATI Radeon 5750, Win7 64 (64 bit ist mist weil 16-Bit Programme wie MakeTZX nicht mehr darauf funktionieren).
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: cgi auslesen

Beitrag von NicTheQuick »

MJPEG ist ein Videostream, der einfach aus aneinandergereihten JPEGs besteht. Im Grunde die einfachste Weise eines Videostreams für schwache Hardware und einem Kamera-Modul, das selbst schon JPEGs ausgeben kann.
Vermutlich erkennt Firefox das manchmal nicht und hört nach dem Empfang eines einzelnen JPEGs einfach aus. Purebasic hingegen macht einfach weiter.

Versuch besser den Datenstrom direkt am Stück mit ReceiveNetworkData zu empfangen und selbst zu zerlegen. Das stelle ich mir allerdings auch nicht so einfach vor, aber wir sind hier ja auch nicht im Anfänger-Forum. :)
LCD
Beiträge: 107
Registriert: 23.01.2008 13:13
Wohnort: Wien

Re: cgi auslesen

Beitrag von LCD »

NicTheQuick hat geschrieben:MJPEG ist ein Videostream, der einfach aus aneinandergereihten JPEGs besteht. Im Grunde die einfachste Weise eines Videostreams für schwache Hardware und einem Kamera-Modul, das selbst schon JPEGs ausgeben kann.
Vermutlich erkennt Firefox das manchmal nicht und hört nach dem Empfang eines einzelnen JPEGs einfach aus. Purebasic hingegen macht einfach weiter.

Versuch besser den Datenstrom direkt am Stück mit ReceiveNetworkData zu empfangen und selbst zu zerlegen. Das stelle ich mir allerdings auch nicht so einfach vor, aber wir sind hier ja auch nicht im Anfänger-Forum. :)
Das erklärt einiges. Danke. Das werde ich versuchen.
PB 4.61Beta1 32/64Bit. AMD FX6100, 8 GB RAM, ATI Radeon 5750, Win7 64 (64 bit ist mist weil 16-Bit Programme wie MakeTZX nicht mehr darauf funktionieren).
Antworten