当前位置: 欣欣网 > 码农

视频云平台——搭建SRS5平台支持GB28181视频流的推送

2024-03-04码农
  • 序言

  • 搭建视频云平台有很多种方式,如果是内部平台往抖音等平台推送,大可以采用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秒以上,因此你要注意了哦。

    你学废了吗?

    👓都看到这了,还在乎点个赞吗?

    👓都点赞了,还在乎一个收藏吗?

    👓都收藏了,还在乎一个评论吗?