Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Ondřej 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:
==================================================
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.
-
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.
-
doplnění http://stackoverflow.com/questions/18175489/python-soap-using-requests (http://stackoverflow.com/questions/18175489/python-soap-using-requests)
-
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
-
Děkuji ale zatím neúspěšný. Nějaký problém v syntaxi:
-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:
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
>
>
>
-
Ještě jednou děkuji. Uspěl jsem s tímto:
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>'
-
Jo z nejakyho duvodu mi z toho zmizely ty apostrofy okolo, tak super, ze to funguje.