如何基於EasyDSS流媒體RTMP、HLS(m3u8)、HTTP-FLV、RTSP服務器體系的全套SDK完成各類場景下的視頻應用需求

需求背景

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

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

需求分析

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

一、協議兼容

從設備取流與數據轉發協議上,咱們須要涉及到:服務器

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

二、流封裝的處理

經過取流協議獲取到音視頻數據後,咱們須要對各類音視頻數據的封裝格式和編碼格式進行二次處理,統一輸出:微信

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

三、流數據的分發與存儲

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

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

四、音視頻編解碼

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

解決方案

以EasyNVR(www.easynvr.com)解決方案爲例

EasyNVR的主要建設目標是將各類各樣的安防攝像機、NVR進行統一接入和管理,並控制流的按需輸出,對全平臺終端提供統一的標準H5流輸出:
EasyNVR
咱們在EasyNVR的設計之初就按照視頻能力平臺的目標去建設,鏈接底層各類廠家的硬件和上層各類各樣的視頻場景應用:
EasyNVR
EasyNVR技術實現採用技術流程是:框架

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

以自建一套流媒體系統爲目標

第一步:取流

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

第二步:數據處理與分析

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

第三步:推流與分發

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

第四步:接口化處理

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

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

資源分享

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

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

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

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

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

關於EasyDSS

EasyDSS(http://www.easydss.com)流媒體解決方案採用業界優秀的流媒體框架模式設計,服務運行輕量、高效、穩定、可靠、易維護,支持RTMP直播、RTMP推送、HTTP點播、HTTP-FLV直播、HLS直播,並支持關鍵幀緩衝,畫面秒開等多種特性,可以接入Web、Android、iOS、H五、微信等全平臺客戶端,是移動互聯網時代貼近企業點播/直播需求的一款接地氣的流媒體服務器,配套OBS、EasyRTMP等直播推流工具以及EasyPlayer等網絡播放器,能夠造成一套完整的視頻直播、錄播解決方案,知足用戶在各類行業場景的流媒體業務需求。

適用場景

EasyDSS
EasyDSS
EasyDSS

相關文章
相關標籤/搜索