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


在之前的博客中《基於EasyNVR實現RTSP/Onvif監控攝像頭Web無插件化直播監控》,我們已經比較多的描述EasyNVR所實現的功能,這些也在方案地址:http://www.easydarwin.org/easynvr/
演示地址:http://easynvr.easydarwin.org:10800/ 中可以直觀地看到功能點和適用的場景,在此就不多說了;

我們主要介紹如何能夠基於EasyNVR二次開發,實現自己的一套業務流程:

我們通常在構架一套視頻SaaS應用的過程中,將平台設計為3層:視頻硬件層(視頻源)、視頻能力平台(vPaaS)、視頻應用平台(vSaaS),視頻硬件包括各種IPC、NVR、編碼器等視頻生成設備,vPaaS視頻能力平台部分主要就是對這些不同的硬件進行整合,輸出統一接口、統一標准的視頻流,vSaaS視頻應用層主要就是對視頻的增值服務了,這個是跑業務的部分;

EasyVPaaS

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在線演示與試用下載

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

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

獲取更多信息

郵件:support@easydarwin.org

WEB:www.EasyDarwin.org

Copyright © EasyDarwin.org 2012-2017

EasyDarwin


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM