可以教我如何實作ONVIF通訊協定嗎
可以提供詳細的ONVIF XML對話,以當做範例讓我進行實作嗎?
什麼是Event Template?為何需要此參數?
此份文件有參考到哪些ONVIF規範?
我應該如何看待ONVIF實作線索
使用條件
XML namespaces (XML命名空間)
圖示及顏色說明
如過我將要使用Genius Vision NVR來驗證我的攝影機,我需要具備什麼基本知識以操作此軟體?
什麼是NVR軟體中的「Channel」參數?作用為何?damos
攝影機的ONVIF初始連結取得影像串流程序為何
指令呼叫序列
必要指令簡介
非必要指令簡介
如何實作雙重串流dual-streaming
為什麼需要雙重串流 dual-streaming?
實作
daughtry注意事項
如何實作設定編碼器參數VideoEncoderOptions (解析度,分辨率,Codec,帧率, FrameRate等等etc)
如何實作設定影像參數ImagingOptions (亮度, 飽和度, 等)
為什麼需要 ImagingSettings 的資訊
如何實作PTZ或快速球控制
指令呼叫序列
如何在ONVIF的spec下實作及支援事件通知event notification
Genius Vision NVR有支援basic notification嗎
如何實作ONVIF Pull-point style 事件通知 event notification (ET01)
指令呼叫序列
如何實作ONVIF motion detection(位移偵測)事件 (ET01)
指令呼叫序列
事件格式定義
通知事件的XML範例
在ONVIF的event術語中,什麼是「Property」?什麼是「SetSynchronizationPoint」?要如何實作?
關於「Property」在規範中的介紹
Property 操作
什麼是Synchronization Point (同步點)
NVC (用戶端) 需要主動呼叫 SetSynchronizationPoint 嗎
究竟什麼是Synchronization Point(同步點)?我還是不明白
如果 NVC 不需要呼叫 SetSynchronizationPoint 指令,那麼這指令存在的意義為何?
何謂notification streaming interface事件通知?
如何實作ONVIF的警報輸入Digital Input (ET01)
指令呼叫序列
取得警報輸入digital input的狀態變化
如何實作ONVIF繼電器輸出控制Relay Output (ET01)
指令呼叫序列
取得繼電器輸出控制relay output的狀態變化
控制繼電器輸出relay output改變狀態
什麼是 InitialTerminationTime 爭議?如何實作
規範中的線索
可能的爭議
NVR 支援狀態
技術細節
可以教我如何實作ONVIF通訊協定嗎
直接一對一教導如何實作ONVIF的細節實在不屬於我們「免費ONVIF獨立驗證服務」的範疇。
不過如果您願意,您可以聘請我們當做您的專家顧問,我們可以提供各式服務,但聘請我們進行顧問服務並不是免費的,請參照我們官方的顧問服務網頁。
在本文件的其餘部分,我們已經提供相當多線索,供您參考以面對實作方面會遇到的各種問題,這些資料應該已經足夠讓您可以大約摸索出ONVIF實作的全貌,但請注意:對於這些資料,我們並不提供官方支援。
可以提供詳細的ONVIF XML對話,以當做範例讓我進行實作嗎?
請參閱
●可以教我如何實作ONVIF通訊協定嗎
什麼是Event Template?為何需要此參數?
Event Template是Genius Vision所定義的一個實作參數,用以解決ONVIF規範定義不清楚時,開發者所可能面臨的問題:因ONVIF規範不明確,不同人會有不同解釋,實務上會造成無法相容。
根據此處所述之原則,也因為世上沒有一種規範可以寫得100%明確而無模糊矛盾之地帶,我們加上此參數,以解決並分類一些常見的「不同解釋」,因而達到設備間相容的目的。
每一個Event Template的簡要定義整理可以在此處參閱。
以下畫面展示如何設定監看頻道的Event Template。
此份文件有參考到哪些ONVIF規範?
●ONVIF-Imaging-Service-Spec-v221.pdf
ppst●ONVIF-Core-Specification-v230.pdf
●ONVIF-DeviceIo-Service-Spec-v221.pdf
我應該如何看待ONVIF實作線索
使用條件
為了省去IP攝影機開發人員必須到處搜尋超過一打的ONVIF規範文件(甚至有些文件並不在ONVIF的範圍內),我們將過去專業的開發經驗整理成各式ONVIF實作線索,讓開發人員可以很容易在閱讀後知道
如何實作。但您必須了解以下原則,作為使用本文件的先決條件:
1. 這些ONVIF實作線索並不享有官方支援,您若需要支援,可聘請本公司當顧問,顧問服務僅提供
放給本公司標準產品的大量經銷商,而且需要另外支付顧問費用。
2. 這份文件內所述的內容,我們不保證具備任何的精確性,閱讀者需自行負擔因資訊錯誤而導致之風fpe
險。
3. ONVIF的驗證「不應該」是透過解讀XML或test report達成,而應該是用手動的方式測試,並用
目測稽核測試結果是否符合預期。我們已知許多ONVIF的功能缺陷,是導因於開發者過度依賴所
謂的「test tool」或「test report」,我們必須認知「驗證是人的工作,而非電腦(或程式)的工作,
而我們不應該交付電腦人所應負擔的責任」,特別是在一種市場的氣氛下,工程師知道如何透過
「欺騙」test tool而達到「符規」的目的。請參閱此篇文章取得更多資訊。
4. 所有的實作線索,都無法取代ONVIF的原始規範,我們仍然深信最好的學習ONVIF實作的方式,
就是「熟讀所有的ONVIF規範」。
5. 如果您需要一個功能完整的測試軟體,我們很歡迎您下載本公司的試用版全功能錄影圖控軟體。
6. 這裡說明了哪些ONVIF規範文件有被本文件參考到。
XML namespaces (XML命名空間)
●除非文件內有另外定義,所有的XML namespace prefix都與規範「ONVIF-Core-Specification-
v230.pdf, 5.3Namespaces」中所述的一致。
圖示及顏色說明
布鲁克大学
●在一些XML的範例中,如果您看到綠色亮底字,這代表您必須將該字串置換成適切的程式值。
●我們會使用如「<ver20/imaging>GetOptions」的表示法,這意思是指「Imaging rvice 2.0中的
GetOptions指令」,在ONVIF規範中,這個指令與Imaging rvice 1.0中的GetOptions是不同的指令。這種表示法可以很清晰的表達在ONVIF規範中因為XML namespace的不同而導致的微小差異。更多資訊請參閱:一般所謂ONVIF 1.0, 1.1, 1.2, 2.0是什麼意思?為什麼1.0, 1.1, 1.2及2.0會無法相容?
●黑色粗體字,例如「GetProfiles」通常指的是ONVIF規範中的指令名稱,而綠色粗體字,例如
「Channel」則通常是表示NVR軟體中的設定值或內部變數,用以控制實際的ONVIF NVC軟體行為。decentralized
如過我將要使用Genius Vision NVR來驗證我的攝影機,我需要具備什麼基本知識以操作此軟體?
我們為了這個目的寫了一個精簡版本的使用手冊,請參閱以下連結:
●Setup Genius Vision NVR for ONVIF Testing
什麼是NVR軟體中的「Channel」參數?作用為何?
Channel是NVR中指定頻道號碼的設定參數(請參如下設定畫面),通常是用以指定在多視訊來源的ONVIF設備中的某一視訊來源(例如4-port的video rver)。若Channel設定為1,則表示「第一個頻道」,2則表示「第二個頻道」,依此類推。
用ONVIF的術語描述這參數的意義,大約是說從GetVideSources所回覆的video source list內,只有符合Channel所指的那個video source會被使用,並且由GetProfiles所回覆的參數中,只有符合前述的video source內的參數會被使用到。
攝影機的ONVIF初始連結取得影像串流程序為何
注意!這是一篇ONVIF實作線索的文章,請先閱讀此處說明。
指令呼叫序列
finishing1. 呼叫<device>GetCapabilities以取得ONVIF各種服務的連接端點(endpoints)。
2. 呼叫GetVideoSources以取得視訊來源的列表,在Genius Vision NVR中,一個「監看頻道」只
會使用一個視訊來源,而這個視訊來原則是透過Channel參數來指定的(請參閱此處解釋)。若
Channel設定為1,則表示「第一個頻道」依此類推。
3. 呼叫GetProfiles來取得所有的media profiles列表。每個視訊來源符合選擇的profile token,會
列在NVR的stream lection內供使用者選擇。請注意視訊來源不符合Channel設定的profile則不會列出。
4. 呼叫<ver20/imaging>GetOptions來取得攝影機支援的影像設定參數及範圍。如果這個呼叫失敗,
則NVR會試圖呼叫 <ver10/imaging>GetOptions,這個時候,我們可以說NVR已經執行了一個
Imaging rvice版本自動偵測的步驟,並把偵測的結果存入NVR的一個內部變數稱為
ImagingVersion,呼叫成功後,NVR便會將攝影機所支援的影像設定列在GUI上可供使用者選擇。
5. 比對NVR內預存的使用者設定的影像設定,以及攝影機目前的影像設定(從GetProfiles所得知)
後,NVR會決定需要變更攝影機參數的列表,如果NVR決定要變更攝影機影像設定,則會呼叫
<ver20/imaging>SetImagingSettings或 <ver10/imaging>SetImagingSettings, 取決於
ImagingVersion的值。
6. 對於每一個已啟用的stream,呼叫GetVideoEncoderConfigurationOptions,並將攝影機支援
的編碼器設定顯示在NVR GUI上。
7. 比對NVR內預存的使用者設定的編碼器設定,以及攝影機目前的編碼器設定(從GetProfiles所
得知),NVR會決定需要變更攝影機參數的列表,如果NVR決定要變更攝影機編碼器設定,則會呼叫SetVideoEncoderConfiguration。
8. 呼叫GetStreamUri以取得media的URI位址,以進行影音串流,取得回應後,NVR便會利用
太奇教育
RTSP進一步連結攝影機。
必要指令簡介
從上面的序列中,我們可以知道要正確支援Genius Vision NVR,則攝影機必須支援一些指令,但這些指
令並非每一個都是必要的,必要的指令列舉如下:
●<device>GetCapabilities - 必要
●GetVideoSources - 必要
●GetProfiles - 必要
●GetStreamUri - 必要
非必要指令簡介
如果攝影機缺乏一些指令支援,則會導致NVR必須停用某些功能,但不支援這些指令並不影響攝影機的
正常影音串流。
●<ver20/imaging>GetOptions或 <ver10/imaging>GetOptions - 非必要。不支援此指令會造成
NVR提用影像設定的功能。
●<ver20/imaging>SetImagingSettings或 <ver10/imaging>SetImagingSettings - optional.
Lacking support for this command caus NVR to disable all ImagingOptions functions.
最熟悉的陌生人 mp3●GetVideoEncoderConfigurationOptions - 非必要. Lacking support for this command caus
NVR to disable all VideoEncoderOptions functions.
●SetVideoEncoderConfiguration - 非必要. Lacking support for this command caus NVR to
disable all VideoEncoderOptions functions.
如何實作雙重串流dual-streaming
注意!這是一篇ONVIF實作線索的文章,請先閱讀此處說明。
為什麼需要雙重串流 dual-streaming?
由於 NVR 顯示影像時仍須透過 CPU 或軟體解碼 H.264 串流,加上近年來 IP 攝影機解析度、畫質及每秒
幅數都不斷增加,導致 CPU 解碼效能產生瓶頸,如果要同時顯示多個攝影機(例如16個視窗或更多),
就有可能產生 CPU 運算力不足的問題,其可能進而影響系統穩定性。
要解決這個問題,最簡單的方式就是採用雙重(或多重)串流,也就是:在視窗數目較少時,用主串流顯
少儿英语口语培训班哪个好示較高的畫質,而在視窗數目較多時,則採用第二串流減輕 CPU 負擔,因此慣例上第一串流是畫質最好
的且以 H.264 編碼以利錄影,第二串流以上則以減輕 CPU 負擔為原則(採用較低解析度,或較少frame-rate),第二串流以上亦可選擇採用 JPEG 以減輕 CPU 解碼負擔。