百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

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

nanshan 2024-11-23 20:15 21 浏览 0 评论

  • 序言

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

你学废了吗?

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


相关推荐

实战派 | Java项目中玩转Redis6.0客户端缓存

铺垫首先介绍一下今天要使用到的工具Lettuce,它是一个可伸缩线程安全的redis客户端。多个线程可以共享同一个RedisConnection,利用nio框架Netty来高效地管理多个连接。放眼望向...

轻松掌握redis缓存穿透、击穿、雪崩问题解决方案(20230529版)

1、缓存穿透所谓缓存穿透就是非法传输了一个在数据库中不存在的条件,导致查询redis和数据库中都没有,并且有大量的请求进来,就会导致对数据库产生压力,解决这一问题的方法如下:1、使用空缓存解决对查询到...

Redis与本地缓存联手:多级缓存架构的奥秘

多级缓存(如Redis+本地缓存)是一种在系统架构中广泛应用的提高系统性能和响应速度的技术手段,它综合利用了不同类型缓存的优势,以下为你详细介绍:基本概念本地缓存:指的是在应用程序所在的服务器内...

腾讯云国际站:腾讯云服务器如何配置Redis缓存?

本文由【云老大】TG@yunlaoda360撰写一、安装Redis使用包管理器安装(推荐)在CentOS系统中,可以通过yum包管理器安装Redis:sudoyumupdate-...

Spring Boot3 整合 Redis 实现数据缓存,你做对了吗?

你是否在开发互联网大厂后端项目时,遇到过系统响应速度慢的问题?当高并发请求涌入,数据库压力剧增,响应时间拉长,用户体验直线下降。相信不少后端开发同行都被这个问题困扰过。其实,通过在SpringBo...

【Redis】Redis应用问题-缓存穿透缓存击穿、缓存雪崩及解决方案

在我们使用redis时,也会存在一些问题,导致请求直接打到数据库上,导致数据库挂掉。下面我们来说说这些问题及解决方案。1、缓存穿透1.1场景一个请求进来后,先去redis进行查找,redis存在,则...

Spring boot 整合Redis缓存你了解多少

在前一篇里面讲到了Redis缓存击穿、缓存穿透、缓存雪崩这三者区别,接下来我们讲解Springboot整合Redis中的一些知识点:之前遇到过,有的了四五年,甚至更长时间的后端Java开发,并且...

揭秘!Redis 缓存与数据库一致性问题的终极解决方案

在现代软件开发中,Redis作为一款高性能的缓存数据库,被广泛应用于提升系统的响应速度和吞吐量。然而,缓存与数据库之间的数据一致性问题,一直是开发者们面临的一大挑战。本文将深入探讨Redis缓存...

高并发下Spring Cache缓存穿透?我用Caffeine+Redis破局

一、什么是缓存穿透?缓存穿透是指查询一个根本不存在的数据,导致请求直接穿透缓存层到达数据库,可能压垮数据库的现象。在高并发场景下,这尤其危险。典型场景:恶意攻击:故意查询不存在的ID(如负数或超大数值...

Redis缓存三剑客:穿透、雪崩、击穿—手把手教你解决

缓存穿透菜小弟:我先问问什么是缓存穿透?我听说是缓存查不到,直接去查数据库了。表哥:没错。缓存穿透是指查询一个缓存中不存在且数据库中也不存在的数据,导致每次请求都直接访问数据库的行为。这种行为会让缓存...

Redis中缓存穿透问题与解决方法

缓存穿透问题概述在Redis作为缓存使用时,缓存穿透是常见问题。正常查询流程是先从Redis缓存获取数据,若有则直接使用;若没有则去数据库查询,查到后存入缓存。但当请求的数据在缓存和数据库中都...

Redis客户端缓存的几种实现方式

前言:Redis作为当今最流行的内存数据库和缓存系统,被广泛应用于各类应用场景。然而,即使Redis本身性能卓越,在高并发场景下,应用于Redis服务器之间的网络通信仍可能成为性能瓶颈。所以客户端缓存...

Nginx合集-常用功能指导

1)启动、重启以及停止nginx进入sbin目录之后,输入以下命令#启动nginx./nginx#指定配置文件启动nginx./nginx-c/usr/local/nginx/conf/n...

腾讯云国际站:腾讯云怎么提升服务器速度?

本文由【云老大】TG@yunlaoda360撰写升级服务器规格选择更高性能的CPU、内存和带宽,以提供更好的处理能力和网络性能。优化网络配置调整网络接口卡(NIC)驱动,优化TCP/IP参数...

雷霆一击服务器管理员教程

本文转载莱卡云游戏服务器雷霆一击管理员教程(搜索莱卡云面版可搜到)首先你需要给服务器设置管理员密码,默认是空的管理员密码在启动页面进行设置设置完成后你需要重启服务器才可生效加入游戏后,点击键盘左上角E...

取消回复欢迎 发表评论: