1. 程式人生 > >如何自己實現一套EasyNVR這樣的無外掛流媒體伺服器

如何自己實現一套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