ONVIF -- 自動偵測IPCam 的流程分析
ONVIF -- 自動偵測IPCam 的流程分析
update:2021-9-30
使用一台符合 ONVIF 標準的 NVR 與 IPCam,測試並記錄其自動偵測 IPCam 以及加入 IPCam 的流程,以(Gxxx NVR為例)
自動偵測 IPCam
- NVR 會使用 multicast的方式,
傳送資料到 239.255.255.250 port 3702(ws-discovery)
- 若網路上存在 IPCam,則會回應此訊息
- NVR 與 IPCam 完成 ws-discovery 流程之後,其實此時就已經找到 IPCam了
後續便可以改成使用 ONVIF 的訊息進行溝通
設定IPCam
當確定 IPCam 的 IP位址之後,就可以透過 ONVIF 指令設定 IPCam
取得系統基本資訊
- GetNetworkInterfaces(此時沒帶帳號密碼,因此可能會失敗)
- GetSystemDateAndTime(此時沒帶帳號密碼,因此可能會失敗)
- GetNetworkInterfaces(此時會帶帳號密碼,可得知IPCam有幾張網路卡,對應的ipaddress)
- GetCapabilities(詢問IPCam支援ONVIF定義的那些能力,例如Imaging,Media等等)
取得 video 設定資訊
- GetProfiles(取得IPCam預設的Profiles,一個Profile主要設定溝通時所採用的meida,
可能會設定對應的video source, video encoder等資訊) - GetVideoEncoderConfigurationOptions
- GetVideoEncoderConfigurations
- GetVideoSourceConfigurations
- GetVideoSources
- GetGuaranteedNumberOfVideoEncoderInstances
- GetProfiles(取得IPCam預設的Profiles,一個Profile主要設定溝通時所採用的meida,
- 取得網路與audio 設定資訊
GetProfiles
GetNetworkInterfaces
GetNetworkDefaultGateway
GetDeviceInformation
GetRelayOutputs
GetAudioEncoderConfigurationOptions
GetAudioSources
GetAudioSourceConfigurations
GetAudioEncoderConfigurations
- 取得 PTZ 資訊
GetProfiles
GetConfigurations
GetConfiguration
GetNode
GetPresets
GetOptions
GetMoveOptions
GetOptions
- 設定 Video/Audio,其作法固定會先Get一次,之後才做Set
GetVideoSourceConfigurations
SetVideoSourceConfigurations
GetAudioSourceConfigurations
SetVideoSourceConfigurations
GetAudioSourceConfigurations
SetAudioSourceConfigurations
- 開始播放串流
GetStreamUri
SetSynchronizationPoint
此時 NVR 便開始與 IPCam 建立RTSP連線,當連線建立之後便會回復 SetSynchronizationPointResponse,所以當收到 SetSynchronizationPointResponse 時,RTP 可能就已經在傳送封包了。
心得
使用其他廠商NVR測試,Get/Set流程略有不同,但基本上都屬上述六個步驟的範疇。
上述流程沒有記錄到 CreateProfiles。
幾個值得特別注意的點
一開始設定尋找設備時,便已經設定帳號密碼了,但是GetNetworkInterfaces仍會試著作一次無帳號密碼的詢問?
GetAudioSourceConfigurations 之後,卻呼叫 SetVideoSourceConfigurations?
GetVideoXXX 與 GetAudioXXX 的流程並不一致,Why?
Referenced from:http://albert-oma.blogspot.com/2012/07/onvif-ipcam.html