在以前的博客中《基於EasyNVR實現RTSP/Onvif監控攝像頭Web無插件化直播監控》,咱們已經比較多的描述EasyNVR所實現的功能,這些也在方案地址:http://www.easydarwin.org/easynvr/,
演示地址:http://easynvr.easydarwin.org:10800/ 中能夠直觀地看到功能點和適用的場景,在此就很少說了;api
咱們主要介紹如何可以基於EasyNVR二次開發,實現本身的一套業務流程:服務器
咱們一般在構架一套視頻SaaS應用的過程當中,將平臺設計爲3層:視頻硬件層(視頻源)、視頻能力平臺(vPaaS)、視頻應用平臺(vSaaS),視頻硬件包括各類IPC、NVR、編碼器等視頻生成設備,vPaaS視頻能力平臺部分主要就是對這些不一樣的硬件進行整合,輸出統一接口、統一標準的視頻流,vSaaS視頻應用層主要就是對視頻的增值服務了,這個是跑業務的部分;cookie
EasyNVR的定位和功能,實際就是在中間的vPaaS視頻能力平臺層,承上啓下,接入各個廠家的IPC/NVR設備,再經過統一的RESTful接口輸出,爲開發者提供穩定、優質的視頻及接口服務;session
以下主要來大體梳理一下EasyNVR各個視頻能力輸出的功能點:網站
EasyNVR提供了一套簡單的能力輸出認證與受權接口,相似於一般的視頻雲平臺提供的AccessToken和SecretKey做用,只要經過用戶名/密碼調用EasyNVR提供的Login接口,得到整個session週期使用的一個token,便可用該token獲取到EasyNVR平臺所提供的全部服務:編碼
名稱 | 解釋 | 含義 |
Username | 登錄用戶名 | - |
Password | 登錄密碼 | 通過MD5加密的字符 |
返回: 200 OK or 401 Unauthorized加密
{ "EasyDarwin" : { "Body" : { "Token" : "a19cb5f6e7d2449d8d24c8a0fc554ca7" }, "Header" : { "CSeq" : "1", "ErrorNum" : "200", "ErrorString" : "Success OK", "MessageType" : "MSG_SC_SERVER_LOGIN_ACK", "Version" : "1.0" } } }
操做: 登陸,登錄後會返回token,之後調用接口須要在cookie中攜帶token信息「token=a19cb5f6e7d2449d8d24c8a0fc554ca7」.net
這樣,只要在後續的接口操做中,http header cookies中攜帶了token,就能夠調用平臺全部能力輸出接口了,token會有一個過時時間,每調用一次就會刷新一次,超時的話,EasyNVR就會從服務器中將該token移除,那麼下次客戶端再次拿過時的token來調用接口的時候,EasyNVR服務器就會返回401,要求客戶端從新鑑權了;插件
名稱 | 含義 | 備註 |
Channel | 通道號 | - |
Protocol | 獲取直播的協議 | RTMP/HLS |
返回: 直播流地址URL設計
{ "EasyDarwin" : { "Body" : { "ChannelName" : "通道名" "URL" : "rtmp://{host}:10035/hls/stream_1" }, "Header" : { "CSeq" : "1", "ErrorNum" : "200", "ErrorString" : "Success OK", "MessageType" : "MSG_SC_SERVER_GET_CHANNEL_STREAM_ACK", "Version" : "1.0" } } }
經過此接口就能夠獲取到EasyNVR接入的通道的實時視頻,還能輸出RTMP/HLS多種視頻碼流協議,基本上RTMP和HLS就可以支撐所有終端的全部視頻播放需求了;
名稱 | 解釋 | 備註 |
ServiceLanPort | EasyNVR服務監聽端口 | ReadOnly |
ServiceLanIP | EasyNVR服務本地地址 | ReadOnly |
ChannelSnapInterval | 通道快照間隔 | 單位爲分鐘 |
NginxRTMPPort | EasyNVR配套的rtmp服務器端口 | 默認10035 |
報文
{ "EasyDarwin" : { "Body" : { "ChannelSnapInterval" : "120", "NginxRTMPPort" : "10035", "ServiceLanIP" : "192.168.66.222; 127.0.0.1; ", "ServiceLanPort" : "10010", }, "Header" : { "CSeq" : "1", "ErrorNum" : "200", "ErrorString" : "Success OK", "MessageType" : "MSG_SC_SERVER_BASE_CONFIG_ACK", "Version" : "v1" } } }
接口:
/api/v1/setbaseconfig?ChannelSnapInterval=120&NginxRTMPPort=10035&ServiceLanPort=10010
參數:
返回: 200 OK
{ "EasyDarwin" : { "Header" : { "CSeq" : "1", "ErrorNum" : "200", "ErrorString" : "Success OK", "MessageType" : "MSG_SC_SERVER_SET_BASE_CONFIG_ACK", "Version" : "1.0" } } }
經過管理接口的服務能夠獲取/設置EasyNVR能力平臺的配置、接入等等,還能經過api/v1/getserverinfo等接口,獲取平臺的版本號,運行時長等信息,對於管理者來講,很是好用;
EasyNVR無插件視頻接入方案說明:http://www.easydarwin.org/easynvr/
同時可在網站中訪問EasyNVR在線演示:
也能夠在網站上下載最新版本:
Copyright © EasyDarwin.org 2012-2017