1.1 生成onvif框架
準備工作,電腦聯網,新建乙個資料夾,後面將把你生成的相關檔案放在這個目錄下。進入該資料夾開啟terminal,輸入如下指令
/www.onvif.org/onvif/ver20/ptz/wsdl/ptz.wsdlwsdl2h是之前安裝gsoap後的乙個工具,後面幾個引數含義可使用
wsdl2h -h
檢視,也可以在網上查詢。
-o onvif.h
代表輸入檔名為onvif.h
等待一段時間後剛剛新建的資料夾下多出onvif.**件。這樣onvif框架就生成了。
1.2 生成onvif框架原始碼
由於很多攝像頭需要鑑權,需要使用soap_wsse_add_usernametokendigest函式授權,而生成的onvif.h中不包含授權部分,故需新增相關檔案,否則後面生成的原始檔在需要鑑權時功能不完整會報錯。
第一步在onvif.**件開頭新增
#import 「wsse.h」
接下來生成原始檔,在terminal中鍵入
各引數具體含義可以通過soapcpp2 -2 -c -l -c onvif.h -x -i .
/
soapcpp2 -h
獲取,這裡不再贅述。等待一段時間後就能得到有用的原始檔了。
在該過程中可能會出現如下錯誤
這是因為onvif.h標頭檔案中同時#import「wsdd10.h」和#import「wsa5.h」,此時修改wsa5.**件,將int soap_env__fault修改為int soap_env__fault_alex.再次執行生成原始檔命令即可。wsa5.h(288): *
*error**: service operation name clash: struct/
class
'soap_env__fault' already declared at wsa.h:273
最後複製gsoap中相關檔案到目錄下
最終資料夾中包括生成的和複製的檔案總共如下
dom.h dom.c
mecevp.h mecevp.c
smdevp.h smdevp.c
soaph.h
soapstub.h
stdsoap2.h stdsoap2.c
threads.h threads.c
wsaapi.h wsaapi.c
wsdd.h
wsseapi.h wsseapi.c
soapc.c
soapclient.c
合計19個檔案
到這裡就大功告成,剩下的需要我們編寫主函式,呼叫相關介面,獲取rtsp位址。將在下一章給出具體**。
linux系統下,onvif裝置鑑權實現
fedora23 qtcreator4.0.3 based on qt5.6.2 opnessl onvif裝置鑑權,其實很簡單,但是作者在開發過程中走了很大的彎路,嘗試了多種方法,最終都以失敗告終。曾經一度陷入絕望,甚至產生回家種地的念頭。最終功夫不負有心人,發現其實乙個函式就可以搞定,頗有柳暗花...
基於linux下獲取時間函式的詳解
asctime 將時間和日期以字串格式表示 include 定義函式 char asctime const struct tm timeptr 函式說明 asctime 將引數timeptr所指的tm結構中的資訊轉換成真實世界所使用的時間日期表示方法,然後將結果以字串形態返回。此函式已經由時區轉換成...
LiveNVR中使用Onvif協議獲取裝置快照
我們知道livenvr中可以獲取快照資訊,之前的文章也說明了livenvr是如何進行快照抓取的 這裡我們使用另一種方法進行快照的抓取 獲取裝置能力capabilities 獲取裝置的能力,並且可以獲取到media和ptz的uri,使用media的uri,可以進行快照的抓取 tds getcapabi...