GB28181 伺服器開發中遇到問題整理

2020-10-15 13:01:21

car-eye GB28181平臺中 web和視訊伺服器開發已經開始進入到釋出版本階段。在平臺開過程中遇到過很多問題,下面整理下分享給各位開發者,同時也作為備份。

1. 平臺框架和通訊。

一般來說我們做一個平臺的使用者介面,通常用java,C#這些工具,而視訊服務通常採用C++或go這類語言。所以基本要一個通訊來實現資料共用和業務串聯。通常的通訊不外乎是採用底層的TCP通訊,上層的http通訊等。在JB28181專案中我們採用了mq訊息佇列作為通訊方式。之所以採用這個中介軟體是因為MQ在各種作業系統,語言都有自己成熟的版本。同時他比開發基於TCP協定的通訊協定要簡單,又比如http協定這類協定要實時性好。

2. 串流媒體伺服器和SIP伺服器模型

為了加快開發速度,我們採用了第三方的rtmp伺服器作為拉流伺服器,在JB28181伺服器中同時開發支援ws-flv拉流方式。

成熟的nginx-RTMP伺服器在其基礎上進行擴充套件實現了多種的視訊流格式的拉取。如rtmp,http-flv,ws-flv,hls等。滿足不同使用者端的播放需要。這部分和JT1078視訊伺服器基本是保持一致的

3. SIP伺服器的諸多疑問

一. RTP資料流的分發,採用多個埠接收裝置流還是一個埠

裝置一般採用UDP協定來傳送資料到視訊伺服器。採用一個埠的好處是伺服器的管理更加方便。採用多個埠的時候

處理起來更加方便,我們目前採用埠段的方式,動態分配埠給需要上傳視訊伺服器

二. 音訊流處理

GB28181的裝置音訊流通常使用G711.A 或者G726的這些格式。這在行動端,web網頁播放會有問題。所以採用ffmpeg或者海思庫將音訊格式轉化再傳送到RTMP伺服器

三 針對公網的裝置通訊

一般來說28181-2016版本是支援TCP協定的。如果是2011版本只支援UDP協定,建議將資料通訊轉發下。尤其是伺服器級聯的時候,資料應該從本地伺服器轉發到上級視訊伺服器。

car-eye JB28181和JT1078 視訊伺服器在不斷升級和優化當中。有關開原始碼和平臺體驗請參考獲取

https://github.com/Car-eye-team