序言
搭建视频云平台有很多种方式,如果是内部平台往抖音等平台推送,大可以采用SRS-Stack服务搭建模式,因为一般的视频源都可以控制在自己的网络范围内。
而如果是企业内网想要把视频送到云平台,国内的大客户(一般是国有大厂)们,最早接触的应该都是GB28181系列的平台,因此这次我们就来聚焦在GB28181视频推流的服务平台上。
1. SRS 5.0
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
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秒以上,因此你要注意了哦。
你学废了吗?
👓都看到这了,还在乎点个赞吗?
👓都点赞了,还在乎一个收藏吗?
👓都收藏了,还在乎一个评论吗?