序言
搭建視訊雲平台有很多種方式,如果是內部平台往抖音等平台推播,大可以采用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-engine
yum install-y yum-utils
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
yum 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
dockercp-a srs5:/usr/local/srs/conf /srs/conf
dockercp-a srs5:/usr/local/srs/objs /srs/objs
# 檢查檢視/srs內的目錄是否包含conf和objs
# 刪除臨時容器
dockerrm-f srs5
# 建立srs5容器
docker run -d--restart=always --name srs5 -p5060:5060 -p9000:9000 -p1935:1935 -p1985:1985 -p8080:8080 -p8000: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秒以上,因此你要註意了哦。
你學廢了嗎?
👓都看到這了,還在乎點個贊嗎?
👓都點贊了,還在乎一個收藏嗎?
👓都收藏了,還在乎一個評論嗎?