使用onvif協議最重要的應用就是對裝置進行ptz雲台控制,ptz控制包含轉動、變焦等,這裡我們主要討論常用的轉動和變焦(也就是放大縮小)
要進行裝置ptz控制,我們首先需要獲取到裝置的device service address和此裝置的使用者名稱密碼
前兩個流程和獲取流位址一樣
獲取裝置能力capabilities
獲取裝置的能力,並且可以獲取到media和ptz的uri,使用這兩個url可以進行流和ptz操作,這裡如果ptz uri獲取不到意味著這個裝置無法支援ptz控制
_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))
}
獲取media profile
使用上一步獲取到的media uri獲取裝置的media profile
_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))
}}
ptz控制
使用獲取的media uri和media profile token進行ptz控制
ptz控制,這裡只考慮continuousmove,需要在停止的時候傳送停止命令
_tptz__continuousmove* continuousmove = soap_new__tptz__continuousmove(ptzproxy, -1);
_tptz__continuousmoveresponse* response = soap_new__tptz__continuousmoveresponse(ptzproxy, -1);
continuousmove->profiletoken = const_cast(profile.c_str());
tt__ptzspeed* velocity = soap_new_tt__ptzspeed(ptzproxy, -1);
continuousmove->velocity = velocity;
tt__vector2d* pantilt = soap_new_tt__vector2d(ptzproxy, -1);
continuousmove->velocity->pantilt = pantilt;
continuousmove->velocity->pantilt->space = "";
tt__vector1d* zoom = soap_new_tt__vector1d(ptzproxy, -1);
continuousmove->velocity->zoom = zoom;
switch (command)
if (ptzproxy->continuousmove(continuousmove, response) == soap_ok)
//轉動成功
停止ptz控制
_tptz__stop* stop = soap_new__tptz__stop(ptzproxy, -1);
_tptz__stopresponse* response = soap_new__tptz__stopresponse(ptzproxy, -1);
stop->profiletoken = const_cast(profile.c_str());
bool* pantilt = new bool;
stop->pantilt = pantilt;
*(stop->pantilt) = true;
bool* zoom = new bool;
stop->zoom = zoom;
*(stop->zoom) = true;
if (soap_ok == ptzproxy->stop(stop, response))
//停止成功
LiveNVR中使用Onvif協議控制預置位
livenvr支援預置位控制,包括轉到指定預置位,設定指定預置位,刪除指定預置位 預置位在安防領域有較為普遍的應用,可以進行很多既定位置的跳轉,很方便 之前我們說過如何用onvif協議進行裝置的發現,探測,以及雲台控制等,今天我們來說一下如何使用onvif進行預置位的操作 獲取裝置能力capabil...
LiveNVR中使用Onvif協議控制預置位
livenvr支援預置位控制,包括轉到指定預置位,設定指定預置位,刪除指定預置位 預置位在安防領域有較為普遍的應用,可以進行很多既定位置的跳轉,很方便 之前我們說過如何用onvif協議進行裝置的發現,探測,以及雲台控制等,今天我們來說一下如何使用onvif進行預置位的操作 獲取裝置能力capabil...
LiveNVR中使用Onvif協議獲取裝置快照
我們知道livenvr中可以獲取快照資訊,之前的文章也說明了livenvr是如何進行快照抓取的 這裡我們使用另一種方法進行快照的抓取 獲取裝置能力capabilities 獲取裝置的能力,並且可以獲取到media和ptz的uri,使用media的uri,可以進行快照的抓取 tds getcapabi...