Seite 1 von 1
Bild von Webcam im Netzwerk holen
Verfasst: 12.12.2024 09:59
von Then
Moin zusammen,
wir haben eine Webcam, die im Netzwerk ist. Ich kann sie vom Browser erreichen und kann auch neben dem Admin Menü, das einzelne Bild getrennt aufrufen. Soweit, so gut. Ich möchte das Bild nun speichern und krieg das nicht hin.
Der Link zur Seite lautet "
http://xx.xx.xx.xx/cgi-bin/image.jpg"
Rufe ich ihn auf, startet der Browser und zeigt mir das Bild. Mit "URLDownloadToFile_(" lässt sich das Bild nicht speichern.
Wie kann ich dieses Bild speichern ??
Re: Bild von Webcam im Netzwerk holen
Verfasst: 12.12.2024 11:11
von dige
Schau mal im Browser Debugger oder im Quellcode, wie das gebaut ist. Der direkte Aufruf des Bildes geht vermutlich nur, wenn bestimmte Parameter vorhanden sind. Referer, Cookie/SessionID usw..
Re: Bild von Webcam im Netzwerk holen
Verfasst: 21.12.2024 20:16
von Benubi
Hat es jetzt funktioniert? Musst du nicht Benutzername und Passwort vielleicht mit angeben? (ggf. funktioniert es auch nur per https:// und manche browser ersetzen das http selbstständig zu https wenn sie können).
Re: Bild von Webcam im Netzwerk holen
Verfasst: 22.12.2024 17:38
von jogo
ich hab eine kleine Webcam von Revotech, und dort rufe ich den Schnapschuss so auf:
http://192.168.178.xx/cgi-bin/snapshot.cgi
Bei der ReoLink Webcam sieht das Aufruf so aus:
http://(IP-Adresse)/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=(beliebige Kombination aus Zahlen und Buchstaben)&user=(Benutzername)&password=(Benutzerpasswort)
Das Bild seh ich dann im Firefox. Ich klicke dann mit der rechten Maus auf das Bild und wähle "Grafik speichern unter...".
Standardmäßig liegt das Bild dann in ~/Downloads
Aber ich könnte im Speichern unter... - Dialog jeden anderen Ort+Name festlegen.
Aber ich wollte das auch schonmal mit den Purbasic Webcontrol probieren, um das Bild dann beim Aufrufen gleich in mein Zielverzeichnis zu speichern - bin aber irgendwie nicht dazu gekommen. Aber jetzt ist es wieder in Erinnerung geraten - mal sehn, ob ich etwas Zeit finde

Re: Bild von Webcam im Netzwerk holen
Verfasst: 22.12.2024 22:22
von jogo
Das Webcontrol war der falsche Weg. Unter HTTPRequest() im Kapitel Http in der Hilfe ist ein Beispiel (Beispiel: Asynchron), damit funktioniert der Download in den Speicher.
Nun muß das als nächstes von dort in eine Bilddatei gespeichert werden - das gelingt mir aktuell nicht...
Aber auf die schnelle funktioniert das super gut mit wget im Terminal:
Code: Alles auswählen
wget --output-document=/home/jogo/Bilder/schnapp/schnappschuss.jpg "http://192.168.178.94/cgi-bin/snapshot.cgi"
Das sollte dann mit PB per RunProgram() funktionieren (noch nicht getestet, aber hab so schon einige Kommandozeilentools gestartet):
Code: Alles auswählen
RunProgram("wget", "--output-document=/home/jogo/Bilder/schnapp/schnappschuss.jpg "http://192.168.178.94/cgi-bin/snapshot.cgi"","",#PB_Program_Wait)
cooler wär natürlich, wen das komplett mit PB gemacht wird (also ohne wget zu nutzen) - aber da fummel ich noch dran rum...

Re: Bild von Webcam im Netzwerk holen
Verfasst: 24.12.2024 01:45
von jogo
Bild wird gespeichert. Hab hier das super Beispiel HTTPRequest() im Kapitel Http aus der PB-Hilfe einfach genommen und ergänzt:
Code: Alles auswählen
UseJPEGImageDecoder()
UseJPEGImageEncoder()
UsePNGImageEncoder()
HttpRequest = HTTPRequest(#PB_HTTP_Get, "http://192.168.178.94/cgi-bin/snapshot.cgi", "", #PB_HTTP_Asynchronous) ;ist eine Cam von Revotech
If HttpRequest
Debug "StatusCode: " + HTTPInfo(HTTPRequest, #PB_HTTP_StatusCode)
Repeat
Progress = HTTPProgress(HttpRequest)
Select Progress
Case #PB_HTTP_Success
Debug "Download finished"
*Buffer = HTTPMemory(HTTPRequest)
If *Buffer
Debug "Memory buffer size: "+MemorySize(*Buffer) ; Hier kann der Puffer auf die Festplatte oder in das verwendete Verzeichnis geschrieben werden
Debug CatchImage(1, *Buffer, MemorySize(*Buffer)) ;Speicherinhalt als bild-image #1 laden
Debug SaveImage(1, "/home/jogo/Bilder/schnapp/schnappitest_1.jpg", #PB_ImagePlugin_JPEG, 7) ;image #1 als jpeg speichern
Debug SaveImage(1, "/home/jogo/Bilder/schnapp/schnappitest_2.png", #PB_ImagePlugin_PNG) ;image #1 als png speichern
FreeMemory(*Buffer)
EndIf
FinishHTTP(HTTPRequest) ; Rufen Sie immer FinishHTTP() auf, wenn die Anfrage abgeschlossen ist
Break
Case #PB_HTTP_Failed
Debug "Download failed"
FinishHTTP(HTTPRequest) ; Rufen Sie immer FinishHTTP() auf, wenn die Anfrage fehlschlägt
Break
Case #PB_HTTP_Aborted
Debug "Download aborted"
FinishHTTP(HTTPRequest) ; Rufen Sie immer FinishHTTP() auf, wenn die Anfrage abgebrochen wird
Default
Debug "Current download: " + Progress ; Der aktuelle Download-Fortschritt in Bytes
Delay(100)
EndSelect
ForEver
Else
Debug "Request creation failed"
EndIf