Skript pro čtení obrázků z kamery

Ondřej

Skript pro čtení obrázků z kamery
« kdy: 25. 02. 2017, 22:11:49 »
Ahoj,

mám ip kameru a potřeboval bych z ní dostat .jpg obrázek Kamera má implementovaný onvif protokol. Nikde na googlu a dotazech u výrobce se mi nepodařilo zjistit zda toho lze docílit pomocí nějakého url, třeba http://ip/obrazek.cgi

podařilo se mi odchytit komunikaci onvif device managera s kamerou při zasílání požadavku na snapshot:

Kód: [Vybrat]
==================================================
Index             : 17
Protocol          : TCP
Local Address     : 192.168.X.X
Remote Address    : 192.168.X.X
Local Port        : 47736
Remote Port       : 10080
Local Host        : localhost
Remote Host       :
Service Name      :
Packets           : 5
Data Size         : 569 Bytes
Total Size        : 1 378 Bytes
Data Speed        : 11.8 KB/Sec
Capture Time      : 25.02.2017 16:37:16:685
Last Packet Time  : 25.02.2017 16:37:16:740
Duration          : 00:00:00.055
Local MAC Address :
Remote MAC Address:
Local IP Country  :
Remote IP Country :
==================================================

POST /onvif/media_service HTTP/1.1
Content-Type: application/soap+xml; charset=utf-8; action="http://www.onvif.org/ver10/media/wsdl/GetSnapshotUri"
Host: 192.168.88.202:10080
Content-Length: 317
Accept-Encoding: gzip, deflate
Connection: Close

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"><s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><GetSnapshotUri xmlns="http://www.onvif.org/ver10/media/wsdl"><ProfileToken>720p media profile</ProfileToken></GetSnapshotUri></s:Body></s:Envelope>

po tomto postu je aktuální obrázek dostupný na http://ip/snapshot.jpg

Jako neznalý bashe či pythonu bych potřeboval poradit se skriptem, který provede výše odchycený POST a následně uloží obrázek do nějakého adresáře.

Předem děkuji za tipy a pomoc.

Ondřej.
« Poslední změna: 26. 02. 2017, 20:52:05 od Petr Krčmář »


Ondřej

Re:pomoc se skriptem
« Odpověď #1 kdy: 25. 02. 2017, 23:18:50 »
tady jsem si asi našel částečnou odpověď, ale pro neprogramátora to pro mě bude težké převést na můj případ.

Ondřej


Dzavy

Re:pomoc se skriptem
« Odpověď #3 kdy: 25. 02. 2017, 23:29:04 »
Kód: [Vybrat]
curl -s -H "Content-Type: application/soap+xml; charset=utf-8; action="http://www.onvif.org/ver10/media/wsdl/GetSnapshotUri" -d "<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"><s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><GetSnapshotUri xmlns="http://www.onvif.org/ver10/media/wsdl"><ProfileToken>720p media profile</ProfileToken></GetSnapshotUri></s:Body></s:Envelope>" http://192.168.X.X:10080/onvif/media_service

sleep 2

curl -s -o snapshot.jpg http://192.168.X.X:10080/snapshot.jpg

Ondřej

Re:pomoc se skriptem
« Odpověď #4 kdy: 26. 02. 2017, 00:14:39 »
Děkuji ale zatím neúspěšný. Nějaký problém v syntaxi:

Kód: [Vybrat]
-bash: syntax error near unexpected token `<'
asi nějaká chyba v : nebo " když to zkusím oříznout na "<pokus>" tak mi curl skončí takto:

Kód: [Vybrat]
pi@raspberrypi:~ $ curl -s -H "Content-Type: application/soap+xml; charset=utf-8; action="http://www.onvif.org/ver10/media/wsdl/GetSnapshotUri" -d "pokus" http://192.168.88.202:10080/onvif/media_service
>
>
>






Ondřej

Re:pomoc se skriptem
« Odpověď #5 kdy: 26. 02. 2017, 00:51:54 »
Ještě jednou děkuji. Uspěl jsem s tímto:

Kód: [Vybrat]
curl http://192.168.88.202:10080/onvif/media_service -d '<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"><s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><GetSnapshotUri xmlns="http://www.onvif.org/ver10/media/wsdl"><ProfileToken>720p media profile</ProfileToken></GetSnapshotUri></s:Body></s:Envelope>'

Dzavy

Re:pomoc se skriptem
« Odpověď #6 kdy: 26. 02. 2017, 02:18:47 »
Jo z nejakyho duvodu mi z toho zmizely ty apostrofy okolo, tak super, ze to funguje.