一、理解
1.1 技術理解
ONVIF = 服務端 + 客戶端 =(Web Services + RTSP)+ 客戶端 = ((WSDL + SOAP) + RTSP) + 客戶端
WSDL是服務端用來向客戶端描述自己實現哪些請求、發送請求時需要帶上哪些參數xml組織格式;SOAP是客戶端向服務端發送請求時的參數的xml組織格式
Web Services實現攝像頭控制(比如一些參數配置、攝象頭的上下左右(PTZ)控制);RTSP實現報像頭視頻傳輸
Web Services具攝像頭控制具體到技術交互實現上,其實和http差不多,客戶端以類似http post的格式向服務端發送請求,然后服務端響應客戶端請求。
比如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>
參考:https://blog.csdn.net/benkaoya/article/details/72453403
1.2 位置說明
這里直接盜用一張圖,原文鏈接:https://wenku.baidu.com/view/a2ba36327fd5360cba1adb5a.html
二、檢測工具
2.1 ONVIF Device Test Tool
ONVIF Device Test Tool是官方發布的onvif檢測工具,該工具只提供給ONVIF會員使用,官網不提供下載
下載鏈接:http://www.happytimesoft.com/download.html(20190219更新:當前似乎該頁面也已不提供下載)
2.1.1 基本使用方法
這里只講檢測報像頭支持哪些請求,更具體的可參考:https://wenku.baidu.com/view/510b1105a58da0116d174906.html
打開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請求報文以構造畸形報文測試攝像頭對報文處理是否有問題。)
2.2 ONVIF Device Manager
ONVIF Device Manager是一個第三方的onvif協議測試工具,具有以下功能
下載鏈接:https://sourceforge.net/projects/onvifdm/?source=navbar
2.2.1 基本使用方法
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支持的操作,自己隨便點即可。