如何自己實現一套EasyNVR這樣的無插件流媒體服務器

EasyNVR流媒體解決方案

EasyNVR能夠通過簡單的網絡攝像機通道配置,將傳統監控行業裏面的高清網絡攝像機IP Camera、NVR等具有RTSP協議輸出的設備接入到EasyNVR,EasyNVR能夠將這些視頻源的音視頻數據進行拉取,轉換爲RTMP/HLS,進行全平臺終端H5直播(Web、Android、iOS),並且EasyNVR能夠將視頻源的直播數據對接到第三方CDN網絡,實現互聯網級別的直播分發,EasyNVR的主要建設目標是將各種各樣的安防攝像機、NVR進行統一接入和管理,並控制流的按需輸出,對全平臺終端提供統一的標準H5流輸出:

EasyNVR無插件直播

我們在EasyNVR的設計之初就按照視頻能力平臺的目標去建設,連接底層各種廠家的硬件和上層各種各樣的視頻場景應用:

EasyNVR無插件直播

EasyNVR技術實現我們採用技術流程是:

  • EasyOnvifClient進行設備的發現和設備直播流取址;
  • EasyRTSPClient進行RTSP取流;
  • 將安防類的G.711/G.726等音頻格式通過EasyAACEncoder轉碼爲AAC格式;
  • EasyRTMP對音視頻流進行校正和推流到EasyDSS流媒體服務器;
  • EasyDSS流媒體服務器進行RTMP/HTTP-FLV/HLS同步輸出,兼容所有終端;
  • 外圍根據用戶的接口請求控制拉流->推流->轉發的節奏;
  • 各個流轉節點同步會做一些快照、錯誤碼的記錄和對外輸出;

如何自建一套EasyNVR流媒體系統

第一步:設備對接協議的選擇

無論是以RTSP、Onvif協議從設備取流,還是國標GB/T28181向設備取流,都是根據設備所支持的協議,通過協議過程獲取到設備回調的音視頻數據,例如海康的NetSDK、國家電網視頻平臺A/B接口等;

在取流協議的選擇上,就看自身的應用需求,比如您的設備只有海康的,那麼您完全可以用海康的SDK來取流,但是如果您的設備是各種廠家都有,而且不固定,建議採用的是RTSP這種國際標準的取流方式。

那麼,以RTSP取流爲例,我們在開源或者商用領域有很多可選的,比如ffmpeg和EasyRTSPClient(https://github.com/EasyDSS/easyRTSPClient);

第二步:數據處理與分析

從第一步取到音視頻流後,我們需要將流統一Demux爲ES流進行進一步的處理,例如海康SDK輸出的大部分流爲PS流,我們需要將PS解析成ES的音視頻數據,再基於ES的音頻、視頻數據進行例如:快照、視頻信息、轉碼、視頻分析等多種操作。

第三步:推流與分發

在第二步進行了初步的數據處理後,我們需要將ES音視頻數據通過librtmp或者EasyRTMP(https://github.com/EasyDSS/EasyRTMP)推送到nginx-rtmp或者EasyDSS(www.easydss.com)流媒體服務器進行高性能分發和存儲,並提供一系列的對外管理接口;

第四步:接口化處理

完成了以上3步,只能算是跑通了整個數據流程,我們還需要對整個流程進行控制,例如,當有客戶端請求觀看的時候,我們才啓動取流、轉碼、推流、分發的過程,當用戶停止觀看或者一段時間內超時未進行服務端保活,服務端即停止整個流轉的過程。

同時,我們需要將對某個設備的取流、取錄像的過程均以接口的形式對外輸出(參考EasyNVR的實現),這樣一套底層可以提供給多個現場,多種項目使用。

服務建設的原則

回顧EasyDarwin->EasyDSS->EasyNVR的發展過程,基本上保持的是先局部後系統、先組件後平臺的發展方式,一步一步夯實每一個細節功能點,從最基礎、最兼容的音視頻數據的拉流獲取,到高效的、全兼容的數據推流,再到流媒體服務器對音視頻數據的高性能分發,與全平臺的音視頻播放,這整個的一條音視頻數據傳輸鏈路的形成,就足夠滿足各種千變萬化的音視頻應用的需求場景。

尤其是在安防領域,其主要特點是設備多、用戶少、智能化要求高,我們需要接入多種網絡環境下的多種不同協議的設備,例如攝像機IPC、網絡硬盤錄像機NVR、硬盤錄像機DVR、GB/T28181國標設備、單兵設備、SIP協議設備等,這就會涉及到比較多的數據傳輸和控制協議,例如:RTSP、RTP、Onvif、GB/T28181、SIP、國網A/B接口等,而這些傳輸協議的數據封裝格式又會各種各樣:ES、TS、PS,PES,我們需要做的是將所有的這些協議進行兼容,對上層應用系統、用戶側提供統一的接口和兼容性強的音視頻輸出協議,構建一套高內聚、低耦合、易擴展、接口友好的視頻能力平臺,讓應用系統的研發人員基於視頻能力平臺就可以研發出各種以視頻爲增值服務的應用平臺!

在傳統安防結合互聯網的音視頻應用領域,基本上可以拆分爲以下幾點:

1、協議兼容

從設備取流與數據轉發協議上,我們需要涉及到:

  • RTSP取流;
  • Onvif協議控制;
  • GB/T28181協議控制;
  • 國網A/B接口控制;
  • RTMP推流;

2、流封裝的處理

通過取流協議獲取到音視頻數據後,我們需要對各種音視頻數據的封裝格式和編碼格式進行二次處理,統一輸出:

  • RTP數據解析;
  • PS數據解析;
  • RTMP/FLV數據封裝;

3、流數據的分發與存儲

流媒體服務是所有視頻應用最核心的部分,主要要求能夠穩定、高性能、全平臺分發,並且能夠提供一系列的外圍管理服務,包括錄像、檢索、回放、鑑權等:

  • 高性能分發;
  • RTMP/HLS/HTTP-FLV同步輸出;
  • 錄像、檢索與回放;

4、音視頻編解碼

  • 視頻快照;
  • G.711/G.726/PCM轉碼AAC;
  • 音視頻的解碼與播放

關於EasyNVR

EasyNVR能夠通過簡單的網絡攝像機通道配置,將傳統監控行業裏面的高清網絡攝像機IP Camera、NVR等具有RTSP協議輸出的設備接入到EasyNVR,EasyNVR能夠將這些視頻源的音視頻數據進行拉取,轉換爲RTMP/HLS,進行全平臺終端H5直播(Web、Android、iOS),並且EasyNVR能夠將視頻源的直播數據對接到第三方CDN網絡,實現互聯網級別的直播分發;

詳細說明:http://www.easynvr.com

點擊鏈接加入羣【EasyNVR解決方案】:383501345

資源引用

EasyDarwin開源流媒體服務器:www.EasyDarwin.org

EasyDSS商用流媒體解決方案:www.EasyDSS.com

EasyNVR無插件直播方案:www.EasyNVR.com

EasyDarwin RTSP系列:https://github.com/EasyDarwin

EasyDSS RTMP系列:https://github.com/EasyDSS

Copyright © EasyDarwin Team 2012-2018

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章