- 📢歡迎點贊 :👍 收藏 ?留言 📝 如有錯誤敬請指正,賜人玫瑰,手留余香!
- 📢本文作者:由webmote 原創
- 📢作者格言:新的征程,我們面對的不僅僅是技術還有人心,人心不可測,海水不可量,唯有技術,才是深沉黑夜中的一座閃爍的燈塔 !
序言
搭建視頻云平臺有很多種方式,如果是內部平臺往抖音等平臺推送,大可以采用SRS-Stack服務搭建模式,因為一般的視頻源都可以控制在自己的網絡范圍內。
而如果是企業內網想要把視頻送到云平臺,國內的大客戶(一般是國有大廠)們,最早接觸的應該都是GB28181系列的平臺,因此這次我們就來聚焦在GB28181視頻推流的服務平臺上。
1. SRS 5.0
系統的環境采用大名鼎鼎的CentOS 7.5及以上
SRS是一個開源的(MIT協議)簡單高效的實時視頻服務器,支持RTMP、WebRTC、HLS、HTTP-FLV、SRT、MPEG-DASH和GB28181等協議。 SRS媒體服務器和FFmpeg、OBS、VLC、 WebRTC等客戶端配合使用,提供流的接收和分發的能力,是一個典型的發布 (推流)和訂閱(播放)服務器模型。 SRS支持互聯網廣泛應用的音視頻協議轉換,比如可以將RTMP或SRT, 轉成HLS或HTTP-FLV或WebRTC等協議。
由于之前的4.0版本需要特別編譯才支持GB28181協議,且不夠穩定,因此我們這次采用的是5.0的最新發布版本。
目前正式版本支持:
- 攝像頭通過SIP注冊。
- 自動邀請攝像頭推流。
- GB/2016轉RTMP協議。
- 基于TCP的SIP信令。
- TCP單端口傳輸媒體。
當前版本不支持語音對講功能,注意注意!
2. 部署命令
我們使用Docker方式進行部署,這種方式簡直不要太簡單!
請按照以下步驟命令進行部署。
# 更新系統
yum -y update # 安裝docker,如果已經安裝請忽略以下命令yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engineyum install -y yum-utils
yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repoyum install docker-ce docker-ce-cli containerd.io
systemctl start docker# 拉取srs5鏡像
docker pull ossrs/srs:5
# 臨時啟動srs
docker run -it --name srs5 ossrs/srs:5
# 復制配置等文件到/srs
mkdir /srs
# 把配置文件復制到/srs
docker cp -a srs5:/usr/local/srs/conf /srs/conf?
docker cp -a srs5:/usr/local/srs/objs /srs/objs# 檢查查看/srs內的目錄是否包含conf和objs
# 刪除臨時容器
docker rm -f srs5# 創建srs5容器
docker run -d --restart=always --name srs5 -p 5060:5060 -p 9000:9000 -p 1935:1935 -p 1985:1985 -p 8080:8080 -p 8000:8000/udp -v /srs/conf/:/usr/local/srs/conf/ -v /srs/objs/:/usr/local/srs/objs/ ossrs/srs:5# 檢查容器是否存在
docker logs srs5
3.測試和配置
按照上述命令配置完成后,我們已經啟動了SRS5容器服務,這時候我們默認啟用了docker.conf
配置文件,因此還需要對該文件進行配置。
因為做了文件資源的映射,因此讓我們打開本地文件進行編輯,并替換【你的公網IP】地址。
# 打開 docker.conf
# vi /srs/conf/docker.conf
# 增加gb28181的配置,如下:
stream_caster {enabled on;caster gb28181;listen 9000;output rtmp://127.0.0.1/live/[stream];host 【你的公網IP】; sip {enabled on;listen 5060;candidate 【你的公網IP】;}
}
編輯完畢后,需要重啟srs5服務。
docker restart srs5
4.測試你的服務
讓我們打開srs自帶的web服務,在這之前,你需要在云服務的安全管理策略內增加上你的IP端口接入。
包含下列端口: 5060,9000,1935,1985,8080,8000。
訪問 http://你的公網IP:8080
點擊連接srs,即可連接上srs服務。
5.GB28181推流配置
注意:音頻編碼僅支持AAC格式。
登錄你的攝像頭界面,找到GB28181配置,這里以海康攝像頭為例:
按照如下進行配置。
配置時注意以下方面。
- 必須是AAC編碼,在音頻編碼中,選擇AAC,采樣率44100HZ。
- 必須是GB-2016標準,否則不支持TCP,在協議版本中選擇GB/T28181-2016。
- 必須是TCP協議,不支持UDP,在傳輸協議中選擇TCP,并使用GB-2016標準。
攝像頭注冊后,SRS會自動邀請攝像頭推流,可以打開下面的鏈接播放:
http://localhost:8080/live/34020000001320000001.flv
http://localhost:8080/live/34020000001320000001.m3u8
webrtc://localhost/live/34020000001320000001
注意: 請把流名稱換成你的設備名稱,IP也更換為你的服務器IP,然后點播放。
在SRS管理界面內也可以看到推送的視頻:
點擊預覽也可以直接播放視頻。
總結
GB28181這個協議,真的很古怪,但畢竟是國內大廠經常使用的方案,因此了解它還是很必須的,基于推流方式的播放,視頻延遲率也非常高,基本在1秒以上,因此你要注意了哦。
你學廢了嗎?
👓都看到這了,還在乎點個贊嗎?
👓都點贊了,還在乎一個收藏嗎?
👓都收藏了,還在乎一個評論嗎?