之前的《云、邊、端方案中視頻設備直接上云的兩種協議選擇》中,我們分別描述了RTMP協議和國標GB28181協議在各種場景中的應用方法,在視頻“云、邊、端”的大框架中,我們極力推薦同時采用RTMP和國標GB28181協議,因為RTMP效果好,GB28181通用、可控。
視頻“云、邊、端”首要的是要遵循公式:
RTMP+GB28181的優勢
RTMP協議本身就是一種直播協議,從設備端的角度來說,可以不受控制,不間斷地往平臺上推流或者重連推流,不影響攝像機本身的其他業務,而GB/T28181協議是一種按需協議,就是流媒體過程會有啟/停,那么,這樣兩種協議,本身是可以共存的。
平臺如果能夠同時支持RTMP協議和GB28181協議,那么,對于RTMP直播,平臺可以通過閥門開關的形式,開啟/關閉推流通道,來控制推流直播,這樣既能做到按需直播(有人看才跑流量),又能做到較好的直播效果;同時,平臺支持GB28181協議,在平臺側,設備可控、可配置,而且能夠多一種視頻傳輸通道,達到雙保障的目的。
RTMP + GB28181平臺技術
那么,如何在技術上建立這樣一款既能支持RTMP推流進來,又能夠支持GB28181設備接入的平臺呢,我們大概分析了一下:
基礎的還是需要一款RTMP流媒體服務:能夠將推流來的RTMP流轉化成為全平臺以及各種行業場景需要的RTSP、RTMP、HTTP-FLV、HLS(m3u8)、WebSocket流,這是整個流媒體服務的核心部分,我們稱為:EasyCVR-RTMPServer-Module。
同時,我們需要接入GB28181設備以及解析各種設備和客戶端的指令,我們稱之為:EasyCVR-GBSIP-Module。另外,我們在接收到設備傳輸來的RTP流媒體數據時,我們還需要對數據進行轉化,將PS數據轉為ES再推送到EasyCVR-RTMPServer-Module做多終端的輸出,我們稱之為:EasyCVR-GBRTP-Module,整個流程大概為:
支持RTMP & GB28181的平臺
我們設計EasyCVR的初衷,就是為了建立一個大而全的流媒體平臺,能夠將RTMP、GB28181、RTSP、Onvif、SDK,都能融合進來,這樣就能夠一套系統,滿足各種各樣的應用場景,融合多種類型的設備,那么單對于這里描述的RTMP + GB28181的功能,在EasyCVR系統中,就相當于兩條完全獨立的管理通道,再通過上層邏輯加以串聯,就能做到非常好的直播與控制的相關。
后續我們將逐步對EasyCVR的技術特點進行介紹,包括如何設計RTMPModule、SIPModule、RTPModule之間的組合與復用,達到多種協議接入、統一輸出的目標。