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 ??
Bild von Webcam im Netzwerk holen
Bild von Webcam im Netzwerk holen
PB 6.10LTs / Windows 11 64Bit (i9/32GB/ 1TB-SSD+4TB-HDD/3060GTX12GB) / 2x27" Multitouch
... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
Re: Bild von Webcam im Netzwerk holen
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..
"Papa, ich laufe schneller - dann ist es nicht so weit."
Re: Bild von Webcam im Netzwerk holen
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).
-
- Beiträge: 118
- Registriert: 22.11.2020 20:05
- Computerausstattung: 'ne Handvoll gebrauchte Laptops & PCs mit Mint Mate
Re: Bild von Webcam im Netzwerk holen
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
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

--
Ideen gibt es viele - man muss sie nur haben...
Mint LMDE5+6 // PureBasic 6.12
Ideen gibt es viele - man muss sie nur haben...
Mint LMDE5+6 // PureBasic 6.12
-
- Beiträge: 118
- Registriert: 22.11.2020 20:05
- Computerausstattung: 'ne Handvoll gebrauchte Laptops & PCs mit Mint Mate
Re: Bild von Webcam im Netzwerk holen
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:
Das sollte dann mit PB per RunProgram() funktionieren (noch nicht getestet, aber hab so schon einige Kommandozeilentools gestartet):
cooler wär natürlich, wen das komplett mit PB gemacht wird (also ohne wget zu nutzen) - aber da fummel ich noch dran rum... 
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"
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)

--
Ideen gibt es viele - man muss sie nur haben...
Mint LMDE5+6 // PureBasic 6.12
Ideen gibt es viele - man muss sie nur haben...
Mint LMDE5+6 // PureBasic 6.12
-
- Beiträge: 118
- Registriert: 22.11.2020 20:05
- Computerausstattung: 'ne Handvoll gebrauchte Laptops & PCs mit Mint Mate
Re: Bild von Webcam im Netzwerk holen
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
--
Ideen gibt es viele - man muss sie nur haben...
Mint LMDE5+6 // PureBasic 6.12
Ideen gibt es viele - man muss sie nur haben...
Mint LMDE5+6 // PureBasic 6.12