EasyNVR最大的優點就是兼容性,經過RTSP協議接入傳統網絡攝像機、NVR、編碼器等,使用RTSP協議接入能兼容市面上絕大多數網絡攝像機等源設備,最大程度的提升總體方案的硬件設備的兼容性,有效的避免採用各個硬件廠家SDK定製的繁瑣以及不通用問題;上一篇咱們詳細說明如何發現網內Onvif設備,還有如何探測特定設備的信息EasyNVR-Onvif(一)使用Onvif協議進行設備發現以及指定設備信息探測web
本文主要說明如何進行很重要的信息獲取,就是設備的流地址(RTSP地址)服務器
要獲取設備的RTSP地址,首先須要獲取到設備的Device Service Address,也就是上一篇提到的。若是須要獲取更進一步的信息,還須要知道此設備的用戶名和密碼,否則沒法進行下一步操做。網絡
獲取設備的能力,而且能夠獲取到Media和PTZ的URL,使用這兩個URL能夠進行流和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)) { if (response->Capabilities) { //Media URI: response->Capabilities->Media->XAddr; //PTZ URI: response->Capabilities->PTZ->XAddr; } }
使用上一步獲取到的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)) { int size = response->__sizeProfiles; for (int i = 0; i < size; ++i) { if (response->Profiles[i]) { //Media Profile Token: response->Profiles[i]->token; //通常設備包含多個Profile Token,包含主碼流、子碼流、第三碼流 } } }
使用獲取的Media URI和Media Profile Token獲取對應的Media Uri,也就是RTSP地址svg
MediaBindingProxy* proxyMedia = new MediaBindingProxy; proxyMedia->soap_endpoint = mediaUrl.c_str(); _trt__GetStreamUri* getStreamUri = soap_new__trt__GetStreamUri(proxyMedia, -1); tt__StreamSetup* streamSetup = soap_new_tt__StreamSetup(proxyMedia, -1); getStreamUri->StreamSetup = streamSetup; getStreamUri->StreamSetup->Stream = tt__StreamType__RTP_Unicast; tt__Transport* transport = soap_new_tt__Transport(proxyMedia, -1); getStreamUri->StreamSetup->Transport = transport; getStreamUri->StreamSetup->Transport->Protocol = tt__TransportProtocol__RTSP; _trt__GetStreamUriResponse* response = soap_new__trt__GetStreamUriResponse(proxyMedia, -1); if (!profile.empty()) { getStreamUri->ProfileToken = const_cast<char*>(profile.c_str()); if (security(proxyMedia, username, password)) { if (proxyMedia->GetStreamUri(getStreamUri, response) == SOAP_OK) { //RTSP地址: response->MediaUri->Uri } } }
獲取到RTSP地址就能夠進行拉流操做了編碼
爲了保障咱們的服務器正常穩定運做,EasyNVR有專業的運維(售前支撐、商務諮詢、售後維護)團隊,隨時對客戶各類突發狀況快速響應處理,保證互聯網直播的順利進行。咱們也但願實現「0延時」,但理想豐滿,現實骨感。每個完美的直播背後都須要設備、網絡、併發量等流程配合完成,正所謂「蝴蝶效應」,任何一個小環節都會對直播延時產生影響,EasyNVR團隊要作的就是不斷完善開發互聯網直播系統,保證直播的低延時、穩定性,同時視頻播放高清流暢。
.net
EasyNVR是一款擁有完整、自主、可控知識產權,同時又可以具有軟硬一體功能的安防互聯網化流媒體服務器,可以經過簡單的網絡攝像機通道配置,將傳統監控行業裏面的高清網絡攝像機IP Camera、NVR等具備RTSP、Onvif協議輸出的設備接入到EasyNVR,EasyNVR可以將這些視頻源的音視頻數據進行拉取,轉換爲RTMP/HLS,進行全平臺終端H5直播(Web、Android、iOS),而且EasyNVR可以將視頻源的直播數據對接到第三方CDN網絡,實現互聯網級別的直播分發。詳情可訪問EasyNVR官網:http://www.easynvr.com
code