基於EasyNVR二次開發實現本身的攝像機IPC/NVR無插件化直播解決方案

在以前的博客中《基於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

EasyVPaaS

EasyNVR的定位和功能,實際就是在中間的vPaaS視頻能力平臺層,承上啓下,接入各個廠家的IPC/NVR設備,再經過統一的RESTful接口輸出,爲開發者提供穩定、優質的視頻及接口服務;session

以下主要來大體梳理一下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」.net

這樣,只要在後續的接口操做中,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在線演示與試用下載

EasyNVR無插件視頻接入方案說明:http://www.easydarwin.org/easynvr/
同時可在網站中訪問EasyNVR在線演示:
EasyNVR

也能夠在網站上下載最新版本:
EasyNVR H5

獲取更多信息

郵件:support@easydarwin.org

WEB:www.EasyDarwin.org

Copyright © EasyDarwin.org 2012-2017

EasyDarwin

相關文章
相關標籤/搜索