在之前的博客中《基於EasyNVR實現RTSP/Onvif監控攝像頭Web無插件化直播監控》,我們已經比較多的描述EasyNVR所實現的功能,這些也在方案地址:http://www.easydarwin.org/easynvr/,
演示地址:http://easynvr.easydarwin.org:10800/ 中可以直觀地看到功能點和適用的場景,在此就不多說了;
我們主要介紹如何能夠基於EasyNVR二次開發,實現自己的一套業務流程:
我們通常在構架一套視頻SaaS應用的過程中,將平台設計為3層:視頻硬件層(視頻源)、視頻能力平台(vPaaS)、視頻應用平台(vSaaS),視頻硬件包括各種IPC、NVR、編碼器等視頻生成設備,vPaaS視頻能力平台部分主要就是對這些不同的硬件進行整合,輸出統一接口、統一標准的視頻流,vSaaS視頻應用層主要就是對視頻的增值服務了,這個是跑業務的部分;

EasyNVR的定位和功能,實際就是在中間的vPaaS視頻能力平台層,承上啟下,接入各個廠家的IPC/NVR設備,再通過統一的RESTful接口輸出,為開發者提供穩定、優質的視頻及接口服務;
如下主要來大致梳理一下EasyNVR各個視頻能力輸出的功能點:
能力平台鑒權
EasyNVR提供了一套簡單的能力輸出認證與授權接口,類似於通常的視頻雲平台提供的AccessToken和SecretKey作用,只要通過用戶名/密碼調用EasyNVR提供的Login接口,獲得整個session周期使用的一個token,即可用該token獲取到EasyNVR平台所提供的所有服務:
- 接口: /api/v1/login?username=xxx&password=xxx
- 參數
| 名稱 | 解釋 | 含義 |
| 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”
這樣,只要在后續的接口操作中,http header cookies中攜帶了token,就可以調用平台所有能力輸出接口了,token會有一個過期時間,每調用一次就會刷新一次,超時的話,EasyNVR就會從服務器中將該token移除,那么下次客戶端再次拿過期的token來調用接口的時候,EasyNVR服務器就會返回401,要求客戶端重新鑒權了;
能力平台視頻輸出
- 接口:/api/v1/getchannelstream?channel=1&protocol=RTMP
- 參數
| 名稱 | 含義 | 備注 |
| 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就能夠支撐全部終端的所有視頻播放需求了;
能力平台管理接口
- 接口: /api/v1/getbaseconfig
- 返回: 基礎配置信息表
| 名稱 | 解釋 | 備注 |
| 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在線演示與試用下載
EasyNVR無插件視頻接入方案說明:http://www.easydarwin.org/easynvr/
同時可在網站中訪問EasyNVR在線演示:

也可以在網站上下載最新版本:

獲取更多信息
Copyright © EasyDarwin.org 2012-2017


