當前位置: 妍妍網 > 碼農

視訊雲平台——搭建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秒以上,因此你要註意了哦。

    你學廢了嗎?

    👓都看到這了,還在乎點個贊嗎?

    👓都點贊了,還在乎一個收藏嗎?

    👓都收藏了,還在乎一個評論嗎?