LiveNVR支持預置位控制,包括轉到指定預置位,設置指定預置位,刪除指定預置位網絡
預置位在安防領域有較爲廣泛的應用,能夠進行不少既定位置的跳轉,很方便spa
以前咱們說過如何用Onvif協議進行設備的發現,探測,以及雲臺控制等,今天咱們來講一下如何使用Onvif進行預置位的操做code
流程
獲取設備能力Capabilities視頻
獲取設備的能力,而且能夠獲取到Media和PTZ的URI,使用這兩個URL能夠進行流和預置位操做,這裏若是PTZ URI獲取不到意味着這個設備沒法支持預置位控制token
_tds__GetCapabilities* capabilities = soap_new__tds__GetCapabilities(proxyDevice, -1); tt__CapabilityCategory* category = new tt__CapabilityCategory; capabilities->Category = category; *(capabilities->Category) = tt__CapabilityCategory__All; _tds__GetCapabilitiesResponse* response = soap_new__tds__GetCapabilitiesResponse(proxyDevice, -1); if (SOAP_OK == proxyDevice->GetCapabilities(capabilities, response)) { if (response->Capabilities) { //Media URI: response->Capabilities->Media->XAddr; //PTZ URI: response->Capabilities->PTZ->XAddr; } }
獲取Media Profileget
_trt__GetProfiles* getProfiles = soap_new__trt__GetProfiles(proxyMedia, -1); _trt__GetProfilesResponse* response = soap_new__trt__GetProfilesResponse(proxyMedia, -1); if (SOAP_OK == proxyMedia->GetProfiles(getProfiles, response)) { int size = response->__sizeProfiles; for (int i = 0; i < size; ++i) { if (response->Profiles[i]) { //Media Profile Token: response->Profiles[i]->token; //通常設備包含多個Profile Token,包含主碼流、子碼流、第三碼流 } } }
預置位控制直播
bool result = false; PTZBindingProxy* ptzProxy = new PTZBindingProxy; ptzProxy->soap_endpoint = ptzUrl.c_str(); if (!security(ptzProxy, username, password)) { delete ptzProxy; return result; } char presetToken[8]; itoa(index, presetToken, 10); if (command == PRESET_GOTO) { _tptz__GotoPreset* preset = soap_new__tptz__GotoPreset(ptzProxy, -1); _tptz__GotoPresetResponse* response = soap_new__tptz__GotoPresetResponse(ptzProxy, -1); preset->ProfileToken = const_cast<char*>(profile.c_str()); preset->PresetToken = presetToken; if (SOAP_OK == ptzProxy->GotoPreset(preset, response)) result = true; if (response) soap_delete__tptz__GotoPresetResponse(ptzProxy, response); if (preset) soap_delete__tptz__GotoPreset(ptzProxy, preset); } else if (command == PRESET_SET) { _tptz__SetPreset* preset = soap_new__tptz__SetPreset(ptzProxy, -1); _tptz__SetPresetResponse* response = soap_new__tptz__SetPresetResponse(ptzProxy, -1); preset->ProfileToken = const_cast<char*>(profile.c_str()); preset->PresetToken = presetToken; if (SOAP_OK == ptzProxy->SetPreset(preset, response)) result = true; if (response) soap_delete__tptz__SetPresetResponse(ptzProxy, response); if (preset) soap_delete__tptz__SetPreset(ptzProxy, preset); } else if (command == PRESET_REMOVE) { _tptz__RemovePreset* preset = soap_new__tptz__RemovePreset(ptzProxy, -1); _tptz__RemovePresetResponse* response = soap_new__tptz__RemovePresetResponse(ptzProxy, -1); preset->ProfileToken = const_cast<char*>(profile.c_str()); preset->PresetToken = presetToken; if (SOAP_OK == ptzProxy->RemovePreset(preset, response)) result = true; if (response) soap_delete__tptz__RemovePresetResponse(ptzProxy, response); if (preset) soap_delete__tptz__RemovePreset(ptzProxy, preset); } delete ptzProxy; return result;
關於LiveNVR
LiveNVR可以經過簡單的網絡攝像機通道配置,將傳統監控行業裏面的高清網絡攝像機IP Camera、NVR等具備RTSP協議輸出的設備接入到LiveNVR,LiveNVR可以將這些視頻源的音視頻數據進行拉取,轉換爲RTMP/HLS,進行全平臺終端H5直播(Web、Android、iOS),而且LiveNVR可以將視頻源的直播數據對接到第三方CDN網絡,實現互聯網級別的直播分發;it