ONVIF = 服務端 + 客戶端 =(Web Services + RTSP)+ 客戶端 = ((WSDL + SOAP) + RTSP) + 客戶端html
WSDL是服務端用來向客戶端描述本身實現哪些請求、發送請求時須要帶上哪些參數xml組織格式;SOAP是客戶端向服務端發送請求時的參數的xml組織格式web
Web Services實現攝像頭控制(好比一些參數配置、攝象頭的上下左右(PTZ)控制);RTSP實現報像頭視頻傳輸app
Web Services具攝像頭控制具體到技術交互實現上,其實和http差很少,客戶端以相似http post的格式向服務端發送請求,而後服務端響應客戶端請求。ide
好比GetStatus請求長這樣(POST的data部份就是soap格式):工具
POST /onvif/device_service HTTP/1.1 Host: 192.168.220.128 Content-Type: application/soap+xml; charset=utf-8 Content-Length: 333 <?xml version="1.0" encoding="utf-8"?> <s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:tptz="http://www.onvif.org/ver20/ptz/wsdl" xmlns:tt="http://www.onvif.org/ver10/schema"> <s:Body> <tptz:GetStatus> <tptz:ProfileToken>prof0</tptz:ProfileToken> </tptz:GetStatus> </s:Body> </s:Envelope>
參考:http://www.javashuo.com/article/p-zmiyzfkt-ka.htmlpost
這裏直接盜用一張圖,原文連接:https://wenku.baidu.com/view/a2ba36327fd5360cba1adb5a.html測試
ONVIF Device Test Tool是官方發佈的onvif檢測工具,該工具只提供給ONVIF會員使用,官網不提供下載spa
下載連接:http://www.happytimesoft.com/download.html(20190219更新:當前彷佛該頁面也已不提供下載).net
這裏只講檢測報像頭支持哪些請求,更具體的可參考:https://wenku.baidu.com/view/510b1105a58da0116d174906.html3d
打開onvif device test tool以後:
第一步,下接選擇要用以收發探測數據包的網卡
第二步,點擊「Discover Devices」按鈕檢測局域網中的攝像頭(本質是向發239.255.255.250:3702發送組播數據包,要求全部收到數據包的攝像頭向本機3702端口進行迴應)
第三步,檢測完成後左下方就會呈現攝像頭列表,雙擊要檢測的攝像頭,其信息就會自動填到右上方的相應內容框中
第四步,點擊「Probe」探測選中主機是否真的支持onvif協議,若是沒有彈框報錯那就是支持的
第五步,在username和password域中填入web管理員的用戶名密碼,而後點擊右方的「check」檢測用戶名密碼是否有誤。若是沒有錯誤右下方的幾個框將會呈現攝像頭的一些信息。該處用戶名密碼是要輸入的,由於其餘選項卡的請求(若是要用到)會自動從該處讀取用戶名密碼發往服務端進行操做鑑權。
切換到Debug選項卡
第一步,將上面Discovery選項卡中,Device Service Address框的值複製到Debug選項卡的「Service Address」框中
第二步,在左下方「Templates」中雙出選擇要進行檢測的請求
第三步,在左上方「Authentication」中選擇權限驗證方式(None爲不發送用戶名密碼,WS-Username token是onvif標準的用戶名密碼驗證方式,Digest是RTSP中的Digest形式,用戶名密碼就是從Discovery那裏讀過來的)
第四步,點擊「Send Request」發送數據包,若是沒有問題在「Response」框中就會呈現返回結果
(以上操做基於我使用該工具的目的是:確認攝像頭支持onvif、獲取onvif請求報文以構造畸形報文測試攝像頭對報文處理是否有問題。)
ONVIF Device Manager是一個第三方的onvif協議測試工具,具備如下功能
下載連接:https://sourceforge.net/projects/onvifdm/?source=navbar
onvif device manager的感受能夠認爲是onvif device test tool的簡化版,簡化的意思一是功能少了一些,二是功能少了同時操做起來更簡單明瞭。更具體使用可參考:https://wenku.baidu.com/view/3cb0bf1a3c1ec5da51e27002.html
第一步,打開onvif device manager,左側是當前檢測到的支持onvif的設備,可點擊「Refresh」按鈕刷新列表。實際使用發現無論怎麼刷新該工具老是很難發現所有設備,此時可以使用「Add」按鈕手動添加。
第二步,雙擊本身要檢測的設備,若是該設備真支持onvif那麼在中部就會呈現支持的onvif操做。當前圖中告警是由於用戶名密碼錯誤。
第三步,若是設備要求用戶名密碼那就在左上方的name和password框中分別輸入攝像頭web端的用戶名密碼,而後點擊「Log in」。注意這裏無論輸什麼都會「登陸成功」,但真正發包時只有正確的用戶名密碼才能完成請求,因此必定要輸入正確的web端用戶名密碼。
輸入正確用戶名密碼後以下圖,中部那些連接就是onvif device manager支持的操做,本身隨便點便可。