Onvif协议及协议测试工具使用详解
目錄
?1、Onvif協議的發展
2、Onvif協議概述及優勢
2.1?? ?協議概述
2.2、規范優勢
2.3、Onvif模塊構成及描述
2.4、協議結構和功能
3、Onvif協議請求的基本流程
4、Onvif測試工具的使用方法
4.1、Onvif device manager工具的使用方法
4.2、VLC測試工具的使用
5、Onvif常見問題排查
5.1、DeviceManager異常分析和處理
5.2、Media異常分析和處理
5.3、Event異常分析和處理
5.4、Imaging異常分析和處理
5.5、PTZ異常分析和處理
5.6、使用user name token方式驗證不通過
5.7、Digest 驗證不通過
5.8?? ?XML里命名空間沒有,或填錯等
5.9、SOCKET收發過程出現的問題
?1、Onvif協議的發展
? ? ? ?隨著網絡及軟件技術快速發展,視頻監控系統已經遍及于人們生活的每個角落,社會安全保障也得到了進一步的提升。隨著視頻監控系統的普及,視頻監控的產業鏈也得到了空前的發展,產業鏈中的分工也越來越細。有些廠商專注于做監控攝像頭,有些廠商專門做大屏顯示器與拼接設備,有些廠商專門做DVR和NVR錄像機,有些廠商則專注于做平臺軟件等,然后這些類別的產品通過集成商進行集成,給客戶提供一整套完整的解決方案。
? ? ? ?這種產業合作模式,迫切需要視頻監控行業提供越來越標準化的接口平臺。2008年5月,由安訊士聯合博世及索尼公司三方宣布將攜手共同成立一個國際開放型網絡視頻產品標準網絡接口開發論壇,取名為ONVIF(Open Network Video Interface Forum,開放型網絡視頻接口論壇),并以公開、開放的原則共同制定開放性行業標準。
ONVIF(開放式網絡視頻接口論壇)是一個全球性的開放式行業論壇,其目標是促進開發和使用基于物理IP的安全產品接口的全球開放標準。ONVIF創建了一個視頻監控和其他物理安全領域的IP產品如何進行相互通信的標準。
? ? ? ?2008年11月,ONVIF論壇正式發布了ONVIF第一版規范 -- ONVIF核心規范1.0。ONVIF此后發布的規范2.0版本不僅具備存儲功能,還具備分析功能。2018年10月,ONVIF發布了Profile T,支持H.265視頻解碼功能。
2、Onvif協議概述及優勢
2.1?? ?協議概述
? ? ? ?ONVIF標準將為網絡視頻設備之間的信息交換定義通用協議,包括裝置搜尋、實時視頻、音頻、元數據和控制信息等。網絡視頻產品由此所能提供的多種可能性,使終端用戶,集成商,顧問和生產廠商能夠輕松地從中獲益,并獲得高性價比、更靈活的解決方案、市場擴張的機會以及更低的風險。
ONVIF協議:ONVIF規范包括像網絡配置,查找設備,設備管理,PTZ攝像機控制,和視頻分析等。這些規格都被寫入到ONVIF配置文件(ONVIF Profiles)。 其中Profile C專門為網絡門禁控制系統的協議標準, Profile G用于視頻存儲、搜索和重放管理;而Profile S應用于網絡視頻監控系統。
ONVIF的作用:ONVIF標準將為網絡視頻設備之間的信息交換定義通用協議,包括裝置搜尋、實時視頻、音頻、元數據和控制信息等。解決了不同廠商之間開發的各類設備不能接入使用的難題,即最終能夠通過ONVIF這個標準化的平臺實現不同產品之間的集成。
ONVIF的實現機制:ONVIF協議中規定,服務端和客戶端之間采用soap協議進行交互,而視頻流的傳輸與控制采用rtsp協議。
2.2、規范優勢
? ? ? ? 協同性:不同廠商所提供的產品,均可以通過一個統一的“語言”來進行交流。方便了系統的集成。
? ? ? ? 靈活性:終端用戶和集成用戶不需要被某些設備的固有解決方案所束縛。大大降低了開發成本。
? ? ? ? 質量保證:不斷擴展的規范將由市場來導向,遵循規范的同時也滿足主流的用戶需求。
2.3、Onvif模塊構成及描述
Profile S:「網絡攝像機」的技術規格,包括如何發送音視頻流,音視頻編碼器配置,PTZ控制、中繼控制等。
Profile C:「門禁控制系統(PACS)設備」的技術規格。
Profile G:「視頻儲存和錄像」的技術規格,包括視頻儲存,搜索,檢索,以及媒體播放功能的技術規格。
Profile Q:「傳輸層安全性(TLS)」的技術規格,該安全通信協議使ONVIF合標設備能夠以不受篡改和竊聽威脅的方式在網絡上與客戶通訊。?
2.4、協議結構和功能
? ? ? ? Onvif是一個協議族,采用了很多成熟的技術。如下圖所示:
協議分為控制面、媒體面兩大部分。
? ? ? ?媒體面,主要負責視頻、音頻碼流的傳輸,協議采用了標準的RTP/RTCP協議。為了適應不同的網絡環境,RTP/RTCP下層,可以采用UDP、TCP、RTSP等。
? ? ? ?控制面,主要分成兩部分:
1)媒體會話的控制,這部分采用標準的RTSP協議;
2)設備控制、媒體配置部分,這是Onvif協議中最復雜的部分,是Onvif協議的精髓所在。采用了web service,采用http+soap傳輸協議。
? ? ? ? 基于web service協議帶來了以下的優點:
1)方便部署。http協議是使用最廣泛的協議,對于存在NAT、防火墻的場所,可以使用http相關已經很成熟的技術;
2)模塊化。Web service是一個協議框架,它特別的優點是模塊快、可擴展。Onvif選擇基于web service,可以利用其中很多已經定義好的協議,無需再單獨定義新的協議。例如Onvif中:用戶登錄就采用了WS-Security協議、設備搜索使用了WS-Discovery協議、事件通知使用了WS-BaseNotification協議。
3)可擴展。Web servce廣泛采用了XML的namespace技術,從設計開始,就將可擴展作為其核心的需求。
4)方便開發。業界已經有很多的工具,只要提供wsdl描述文件,就可以利用工具,自動生成對應的客戶端訪問接口、服務端框架。下圖是基于Web service開發的示意圖:
? ? ? ?Onvif協議的具體功能有:
1)設備搜索;
2)設備管理:
a)能力集
b)系統管理
c)網絡管理
d)安全性
e)輸入、輸出
3)圖像配置
4)媒體配置
5)媒體流管理
6)事件管理
7)PTZ控制
8)視頻分析
3、Onvif協議請求的基本流程
? ? ? 下面舉一個簡單例子,從一個Onvif IPC上電,到能看到視頻圖像的基本流程,來描述Onvif的基本流程:
1)搜索設備,獲取設備的IP地址;
2)獲取設備的能力集,通過能力集可以得知設備支持的功能,以及一些能力參數;
3)查詢設備所有的profile,找到我們感興趣的profile;
4)獲取目標profile對應的rtsp URL;
5)發起rtsp鏈接,并請求對應的碼流;
6)建立rtp鏈接,接受碼流。
? ? ? ?上述步驟中,1-4是采用web service完成。與我們現在流程有一個很大的不同,我們VSIP協議,是前端主動登錄監控系統,而在Onvif協議中,是監控系統主動登錄IPC。
4、Onvif測試工具的使用方法
4.1、Onvif device manager工具的使用方法
? ? ? ?ONVIF Device Manage工具主要用來驗證設備是否支持onvif,實時預覽、PTZ控制及遠程配置IPC參數等功能。
4.1.1、ONVIF Device Manage安裝:
1)PC安裝環境要求:裝有Microsoft .Net Framework 4.0版本
2)安裝源文件請見:ONVIF Device Manage.rar
注:Microsoft .Net Framework 4.0安裝不成功的解決方式,見備注。
4.1.2、ONVIF Device Manage的使用:
1)運行工具
雙擊ONVIF Device Manage快捷方式,運行工具。當前局域網內,支持onvif協議的IPC可以自動顯示出來,見下圖。Device List列表即檢索到的IPC列表
2)基本功能介紹
a.登錄
此時輸入的用戶名和密碼為設備自身的用戶名和密碼,有的廠家設備不需要。輸入正確的用戶名和密碼,即可實時預覽IPC及參數配置。
b.實時預覽
在設備列表選擇一個IPC(單擊即可),點擊Live video即可預覽該IPC畫面,main stream是主碼流預覽,sub stream是子碼流預覽:
c.檢索
在Device List區域的文本框輸入IP地址,即可過濾其它IPC,留下符合條件的設備。
d.手動增加
點擊Add按鈕,輸入url,例如http://192.168.1.123/onvif/device_service,點擊Apply,即可手動增加IPC:
e.rtsp路徑
實時預覽畫面的下方,會顯示rtsp路徑。如下:
rtsp://192.168.1.166:5504/channel=0;stream=0;user=system;pass=system
192.168.1.166為IPC的地址
5504為IPC的端口
channel為通道
stream為碼流,0默認是主碼流,1為子碼流
user和pass:用戶名和密碼
f.視頻編碼配置
選擇子碼流預覽,可以配置子碼流的編碼參數
g.碼流選擇
點擊Profiles,進入碼流切換界面:
Create為創建碼流;Edit為編輯碼流用;
h.PTZ控制
點擊方向鍵:
4.1.3、測試結果
? ? ? 如果通過上述工具可以搜到該設備,說明此設備支持ONVIF。
? ? ? 如果說明書或廠家說是該設備支持ONVIF,但是搜索不到。可以通過IE或廠家自己的配置工具登陸該設備,看ONVIF支持是否開啟,有些廠家的設備ONVIF支持是可選的。
備注:
1.Microsoft .Net Framework 4.0安裝不成功的解決方式
安裝失敗和windows update有關系
按如下操作,即可安裝成功:
1.按組合鍵win+R,打開運行,輸入cmd,回車,在輸入net stop wuauserv,回車,即停止了update的服務;
2.打開C盤根目錄下的“Windows”文件夾,找到SoftwareDistribution文件夾,將其重命名為SDold;
3.按組合鍵win+R,打開運行,輸入cmd,回車,在輸入net start wuauserv,回車,即啟動了update的服務;
4.現在安裝.net framework 4.0就會成功了。?
4.2、VLC測試工具的使用
1)打開開源VLC播放器軟件,并點擊首選項:
2)更改為RTP,保存后關閉VLC播放器,重新打開:
3)打開網絡串流
4)輸入RTSP碼流的地址,比如我們攝像機的RTSP碼流地址為rtsp://10.75.7.123/id=0
10.75.7.123這里是舉例,具體IP地址為現場使用的實際IP地址。
id=0 是為主流視頻碼流,id=1是為輔流視頻碼流。
5、Onvif常見問題排查
5.1、DeviceManager異常分析和處理
舉例:手動時間同步問題
?? ?現象:更改時區信息,無法同步IPC時間
?? ?協議接口: GetSystemDateAndTime和SetSystemDateAndTime
一般處理流程:
1、登入WEB IPC設置IPC的時區為東8區,使用測試工具GetSystemDateAndTime獲取到IPC時間信息。
2、報文解析:
1)DateTimeType->Manual:手動設置時間同步(和NTP設置互斥,協議有規約);
2)DaylightSavings->false:不支持夏日制,如支持hour+1;
3)TZ->GTM+8:東八區,此處是經常出問題的地方,因為各個ipc廠家的時區采用的標識不同,往往會出現設置時區下去,IPC回復200 OK,但是時間并無法生效的問題。此時需要將此部分通過測試工具的SetSystemDateAndTime接口設置給IPC,查看最終是否可以在IPC上看到時間生效;如果使用相同的時區信息設置下去,無法使IPC時間生效,可以直接斷定是IPC的問題。
4)UTCDateTime->UTC時間, UTC時間加上時區偏移,是最終在IPC上顯示的時間。
5)LocalDateTime->Local時間,暫時不用關注;
【需要注意的點】在時間同步問題排查時,我們禁止將同一臺IPC接入不同的NVR,因為不同的NVR有可能都會給IPC發送時間同步,并且我們無法保證,發送的時機、參數設置上能保證統一,此時往往就會出現時間不斷的來回跳變,給排查定位帶來困難。
5.2、Media異常分析和處理
舉例: ONVIF接入分辨率列表顯示比VSIP接入分辨率列表要少。
?? ?現象: 同一款IPC使用vsip協議接入和onvif協議接入同一臺NVR會出現,上報的分辨率不同(不提倡使用不同協議接入同一臺NVR,因協議對通不同,此處支持排查時作為參考)。
?? ?協議接口: ?GetProfiles -> GetVideoEncoderConfigurationOptions
一般處理流程:
獲取到信息:有2路碼流,取其中一路
?獲取到的信息:
? ? ? ?視/音頻源、視/音頻編碼、視頻分析、ptz配置token;因為處理的是視頻編碼參數分辨率異常,需要取VideoEncoderConfiguration的token 000
處理方法:使用OnvifTestTool的接口,GetVideoEncoderConfigurationOptions
得到報文:
? ? ? ?將上述報文中h264的編碼格式分辨率和WEB IPC上對比下,如果WEB IPC有的,但是報
文中又沒有上報,認為是IPC的問題,如果有上報,但是在NVR上顯示異常,則是NVR的。
5.3、Event異常分析和處理
舉例: 對接hik ipc無法收到告警內容
現象:使用pullmsg方式獲取海康ipc告警內容失敗,前端本身有產生告警信息
協議接口:PullMessages
處理方式:
1、使用測試工具得到標準報文:
2、我司NVR發送報文格式:
? ? ? ?翻看Onvif協議標準未對此處pullmsg的post對象部分有詳細的報文格式描述,post消息時需要攜帶subscribe的endpoint部分信息。此時,我們采用OnvifTestTool的診斷功能(見下文,OnvifTestTool的標準報文獲取中提到操作方式),獲取到詳細的參考報文。采用此種報文格式進行拼寫,即可以正常接入。
? ? ? ?一般,當我們遇到一些不明白的問題,首先想到的是翻看標準協議文檔,當協議文檔也未進行詳細的描述時,往往就采用測試工具的參考報文。比較參考報文后,找出不同點,進行修正。通過這種方式,也可以直接發現報文在格式、請求方式、交互內容上,有個比較全面的把握。當然,如果測試工具診斷在IPC的某個功能上,無法進行有效的交互時,我們會認為此種情況下,IPC是不支持此種功能的。
5.4、Imaging異常分析和處理
? ? ? ?Imaging參數異常定位比較簡單,此部分僅列出相關接口,使用測試工具進行驗證,目前外部
有遇到的問題,只有設置回復200 OK,但是前端參數不生效的問題,僅需要使用測試工具即可支持驗證;
? ? ? ?協議接口: GetImagingSettings和SetImagingSettings
5.5、PTZ異常分析和處理
舉例:onvif bosch球機,ptz控制出現無法控制八個方向移動的問題,控制其他廠家的ipc是可控的。協議中規定,八個方向移動是使用ContinuousMove接口實現,所以,我們只需要分析這個接口即可。
處理方式:
NVR->IPC請求報文:
從請求報文中,我們可以獲取到的信息一個是操作的PorfileToken,一個是設置的參數超時時間30s,這兩個參數是我們設置給IPC的,還有400錯誤提示。
? ? ? ?IPC->NVR回復報文:
從中,我們可以獲取到的信息,參數有異常,具體為時間參數異常,即NVR設置給IPC的,超時
時間參數30s,IPC認為參數不合理。此時,我們需要使用測試工具,進行修改延時參數,達到
控制效果,對bosch的IPC進行特殊處理,達到控制的目的。
? ? ? ? 以下是延時參數修正為60s后的報文:
在PTZ控制中報文中的:
簡要描述如下:
? ? ? ?PanTilt和Zoom中的space后面的字符串是相對比較重要的,這個是ipc進行ptz控制的坐標系,后面傳的x,y,z分別對應著水平,偏移,聚焦參數,如果對應的坐標系不同,往往得到的控制效果是不同的。
? ? ? ?在測試工具中,使用GetServices可以獲取到所有的能力集,其中ptz部分包含,relativemove和absolutemove的坐標系,如下截圖所示:
協議規約上,需要坐標系對應控制,當然,因IPC具體實現的情況不同,有時候也僅僅識別continuesmove的坐標系,因為需要對接,也只能特殊處理,進行接入控制。
5.6、使用user name token方式驗證不通過
表現:服務器返回400錯誤(ter:NotAuthorized)。
解決:檢查用戶名和密碼是否正確,客戶端和服務器端的時間是否一致。
5.7、Digest 驗證不通過
表現:目前只是在Onvifstack里實現了digest的驗證方式。在服務器返回401錯誤的時候,
Onvifstack會用401頭部WWW-Authenticate攜帶的參數和密碼來計算出response.但是當計算出的response不正確的時候服務器還會返回401錯誤。
解決:后續我會提供一個標準的我計算出response的工具來排查這種問題,最后的解決需要修改相應的代碼。
5.8?? ?XML里命名空間沒有,或填錯等
表現:服務器返回400錯誤。
解決:修正命名空間。
5.9、SOCKET收發過程出現的問題
表現:使用telnet能請求到目標ip和端口,確認服務是打開的。抓包正常。但是就是沒有得正確的報文。
解決:檢查socket部分的代碼。??
總結
以上是生活随笔為你收集整理的Onvif协议及协议测试工具使用详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CSS浏览器兼容性----Hack
- 下一篇: 04_类与对象_课程动手动脑问题以及课后