![](http://community.geniusvision.net/platform/images/home.png)
ONVIF如何判斷正確性?是否用test tool的某一版本即可判斷對錯?
何謂ONVIF spec set,為何spec set會有版本?
ONVIF如果測試有相容性問題,應修改NVR軟體或攝影機韌體以達相容?
一般所謂ONVIF 1.0, 1.1, 1.2, 2.0是什麼意思?為什麼1.0, 1.1, 1.2及2.0會無法相容?
依我的了解:ONVIF應該只有影像吧?一些設定如解析度、每秒幅數、畫質、亮度,或位移偵測、警報輸入輸出及PTZ等功能,ONVIF並沒有定義吧?
Genius Vision ONVIF版本支援為1.0, 1.1, 1.2或2.0等等哪一種?
我有一些「ONVIF驗證服務」的商業條件問題,如何獲得解答?
ONVIF如何判斷正確性?是否用test tool的某一版本即可判斷對錯?
ONVIF的正確性判斷是多面向的,並無法完全用test tool來判斷,因為(1) test tool也可能有問題(bug),(2) test tool測試也並非完整,這也就是為什麼業界很多狀況都是不完全能相容,但都可以通過test tool的原因。
ONVIF的測試規格文件「ONVIF_Test_Specification_v13_06.pdf」中,「4.Scope」中有說明「 This ONVIF Test Specification does not cover the complete set of functions as defined in [ONVIF Network Interface Specs]; instead it covers a subset of it」,此即說明所謂的官方測試,並無法代表符合規格的完整性,但要能宣稱符合ONVIF,通過test則是必要條件,此文件亦在「5. Requirements for respective test cases」有說明「This document defines whole requirements for claiming conformance to the ONVIF standard which includes every aspect of each requirement in the above documents. 」,亦即在官方的標準下,通過ONVIF測試即可「宣稱是符合ONVIF」。由以上可邏輯推論:通過ONVIF官方的宣稱符合,其實並無法代表符合規格的完整性。
這並不是說ONVIF的官方測試程序完整性不佳,而是不太可能有一種自動化的測試程序可以達到真正的完整,若要達到真正的完整恐怕要付出太多的成本,很難達到經濟效益。但是退一步來說,使用者其實也並不要求達到「完整的測試」,因為實務上任何東西要達到100%都是很困難的,必須要用人的經驗去決定什麼樣的程度是夠完整到達「可使用的成熟度」,而無法完全用自動化或程式化的方式判斷。
以上的結論,最佳的說明方式就是test tool並無法判斷攝影機所輸出的影像是否正確,舉例來說:「透過ONVIF設定影像的解析度、每秒幅數、資料量、亮度、彩度以及飽和度後,實際上輸出的攝影機影像是否有符合使用者設定進去的值」的測試規格,就沒有包含在test spec內。對使用者如此重要的測試項目為何沒有列在test spec內?推其原因大約是ONVIF的test spec都必須是test tool可以檢核的項目,要讓自動化的test tool能夠檢驗影像是否符合設定值似乎尚超越目前科技可以輕易解決的範圍,因此用人來判斷影像是否有符合設定在實務上仍是目前最可靠的方式,無奈人的判斷總有主觀因素存在,因此無法寫在ONVIF的test spec上。
總結來說:ONVIF的正確性判斷,基本上是根據spec,而spec set會有一個版本,雙方可以根據spec set的版本進行定義。目前Genius Vision所使用的spec set為2.3。這個2.3與一般大家所謂的1.0, 1.2, 2.0並非完全同樣的意思。
何謂ONVIF spec set,為何spec set會有版本?
由於ONVIF的spec並不是只有一份,為了明確起見,ONVIF組織定義了spec set為數個spec組合起來的集合,並為spec set定義版本編號。舉例來說spec set 2.3系由下列文件(及版本)所構成:
- ONVIF-AccessControl-Service-Spec-v100.pdf
- ONVIF-ActionEngine-Service-Spec-v100.pdf
- ONVIF-DeviceIo-Service-Spec-v221.pdf
- ONVIF-Display-Service-Spec-v230.pdf
- ONVIF-DoorControl-Service-Spec-v100.pdf
- ONVIF-Imaging-Service-Spec-v221.pdf
- ONVIF-Media-Service-Spec-v230.pdf
- ONVIF-PTZ-Service-Spec-v221.pdf
- ONVIF-Receiver-Service-Spec-v221.pdf
ONVIF如果測試有相容性問題,應修改NVR軟體或攝影機韌體以達相容?
需依據ONVIF spec討論應該修改NVR軟體或者攝影機韌體,一般而言若spec並未明確定義的部份都會以修改NVR增加彈性(例如增加參數設定)為原則,但並非一定是如此作法。
一般所謂ONVIF 1.0, 1.1, 1.2, 2.0是什麼意思?為什麼1.0, 1.1, 1.2及2.0會無法相容?
ONVIF原始設計應是以向前相容為原則(backward compatible),之所以會有1.0, 1.1, 1.2及2.0等問題技術上大略指的是以下數個問題:
- Imaging service在1.0與2.0的XML namespace不同,因此為全然不同的命令。
- PTZ service在1.0與2.0的XML namespace不同,因此為全然不同的命令。
- Device Management在1.0與2.0中的模組規劃不同,其中與IO有關的部份在1.0歸為Device Management的XML namespace,但在2.0後移到Device IO XML namespace,因此會產生全然不同的命令。
ONVIF其餘的部分如Media service並沒有這些問題。至於為何ONVIF要在某些service上要1.0與2.0使用不同的XML namespace,推其原因應該是因其作風嚴謹所致,因為WSDL在1.0中若規定某些元素(XML Element)是必要的,那麼就無法在1.1改成是選用的(必要元素改成選用元素並不符合backward compatible原則),如此就得要創建一個全新的spec,最乾淨的作法就是使用不同的XML namespace,以達到完全分隔的目的。觀察其他的ONVIF spec在更新時,如果沒有規格嚴謹上的必要性,ONVIF並不會選擇在新舊版間使用不同的XML namespace,此時就可達到backward compatible。
然而只要詳細了解這些spec版本間的差異,要達到支援所有版本的ONVIF spec,或是達到自動偵測版本,在技術上都是可能的。
另外需要注意的是:ONVIF的spec既然是人寫的,就可能會有謬誤(也就是bug),因此在部分的小數點更新版本中,ONVIF會標出前一版本有寫錯的地方,因此也不能盡信之,就如同法律一樣,是需要人來解釋的,解釋則會隨著時間演進,但理論上是會越改越明確。
何謂XML namespace?
XML namespace為ONVIF所用的SOAP底層傳輸的XML所需用到的命名的一種方式。舉例來說:若以timg10代表Imaging service 1.0的namespace「http://www.onvif.org/ver10/imaging/wsdl」,而以timg20代表Imaging service 2.0的namespace「http://www.onvif.org/ver20/imaging/wsdl」(請注意紅色標出兩個namespace間的微小的差異),Imaging service中有一個命令稱為GetOptions(其作用為取得imaging sensor能夠調整哪些參數),那麼這命令在Imaging service 1.0中寫為timg10:GetOptions,而在Imaging service 2.0中則寫為timg20:GetOptions,由於XML namespace的不同,導致這兩個功能相同的命令變成完全不同的兩個命令,工程師在寫code的時候,如果要兩個都支援,那麼就必須寫兩份code,分別處理timg10:GetOptions及timg20:GetOptions,並且又由於這兩段code其實功能完全一樣,但命名又不太一樣,實務上容易導致工程師coding時若不特別注意則會產生許多小bug。
依我的了解:ONVIF應該只有影像吧?一些設定如解析度、每秒幅數、畫質、亮度,或位移偵測、警報輸入輸出及PTZ等功能,ONVIF並沒有定義吧?
其實這觀念是錯誤的,舉例來說:
- 可參Imaging WSDL規範,其中SetImagingSettings/ImagingSettings有關於設定Brightness(亮度), Contrast(對比), ColorSaturation(飽和度), Sharpnes(銳利度)的指令。
- 可參Media WSDL規範,其中SetVideoEncoderConfiguration有關於設定Encoding(Codec), Resolution(解析度), Quality(畫質), FrameRateLimit(每秒幅數) ,BitrateLimit(位元率), 等參數的指令。
其他如位移偵測、警報輸入輸出及PTZ等功能,ONVIF其實都有相對應的spec可供參考。
會有這種誤解,大約是因為早期ONVIF還在推廣時,只要有影像就可以通過符合ONVIF的測試,因此該時大多數的廠商都只有影像,但這樣的情形在最近已開始改變。
Genius Vision ONVIF版本支援為1.0, 1.1, 1.2或2.0等等哪一種?
我們都支援,透過自動偵測的方式。也就是我們會自動判斷該攝影機為1.0、1.1、1.2或2.0等等。
我有一些「ONVIF驗證服務」的商業條件問題,如何獲得解答?
因為此服務剛啟動,條件等事項還需定義,請把明確的詢問寫成郵件格式,由本公司統一窗口來作「書面回答」。
何謂ONVIF驗證的商業條件、程序?舉以下範例:
- ONVIF驗證可否間接作?可否針對非製造商的品牌商做?
- 同樣的攝影機不同品牌如何做?是否需重複作?可否一次申請驗證多項型號?
- ONVIF驗證需要多久時間完成?有無任何保證?
- 可否授權使用Genius Vision ONVIF網頁上之任何素材?
- ONVIF驗證是否真的完全免費?是否未來也持續免費?
由於人力資源有限,請僅針對相關的事項依照重要性之順序提出詢問,並且請允許一段回覆所需的處理時間。
--