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

  • 📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!
  • 📢本文作者:由webmote 原创
  • 📢作者格言:新的征程,我们面对的不仅仅是技术还有人心,人心不可测,海水不可量,唯有技术,才是深沉黑夜中的一座闪烁的灯塔 !

序言

搭建视频云平台有很多种方式,如果是内部平台往抖音等平台推送,大可以采用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-engineyum install -y yum-utils
yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repoyum 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秒以上,因此你要注意了哦。

你学废了吗?

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/717814.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

谨用ArrayList中的subList方法

谨用ArrayList中的subList方法 规范一&#xff1a; ArrayList 的 subList 结果不可强转成 ArrayList&#xff0c;否则会抛出 ClassCastException 异常&#xff1a; public static void test7() {List<Integer> list new ArrayList<>();list.add(1);list.add(2);…

JavaWeb—— SpringBootWeb综合案例(登录功能、登录校验、异常处理)

案例-登录认证 目录 案例-登录认证1. 登录功能1.1 需求1.2 接口文档1.3 思路分析1.4 功能开发1.5 测试 2. 登录校验2.1 问题分析2.2 会话技术2.2.1 会话技术介绍2.2.2 会话跟踪方案2.2.2.1 方案一 - Cookie2.2.2.2 方案二 - Session2.2.2.3 方案三 - 令牌技术 2.3 JWT令牌2.3.1…

程序员眼中的“祖传代码”

引言 在IT界&#xff0c;特别是在Java项目中&#xff0c;“祖传代码”通常指的是那些经过长时间积累、由多位开发者共同维护、且蕴含深厚技术沉淀的代码片段或模块。这些代码可能存在于项目的核心模块&#xff0c;也可能是一些辅助性的工具类。它们承载着项目的历史&#xff0…

Matlab 多项式插值(曲线拟合)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 由于对曲线拟合有些兴趣,这里就找了一些资料从最基本的方法来看一下曲线拟合的效果: 二、实现代码 % **********

python科学计算库之Numpy库的使用的简单习题

Numpy库 Numpy&#xff08;Numerical Python的缩写&#xff09;是一个开源的Python库&#xff0c;用于进行科学计算。它提供了一个高性能的多维数组对象&#xff08;ndarray&#xff09;及用于处理这些数组的各种工具和函数。由于其高效和灵活的数据结构以及丰富的功能&#x…

Google 地图 API 教程--干货(1/2)

Google Maps API 教程 在本教程中我们将学习如何使用谷歌地图API V3创建交互式地图。 什么是 API? API = 应用程序编程接口(Application programming interface)。 API(Application Programming Interface,应用编程接口)其实就是操作系统留给应用程序的一个调用接口,…

案例介绍:汽车售后服务网络构建与信息抽取技术应用(开源)

一、引言 在当今竞争激烈的汽车行业中&#xff0c;售后服务的质量已成为品牌成功的关键因素之一。作为一位经验丰富的项目经理&#xff0c;我曾参与构建一个全面的汽车售后服务网络&#xff0c;旨在为客户提供无缝的维修、保养和配件更换服务。这个项目的核心目标是通过高效的…

状态机实现双击、短按、长按等按键识别检测算法

1、按键识别算法的作用 按键识别算法在不同的技术和应用背景下有不同的作用&#xff0c;但其核心目标都是准确、可靠地检测和区分用户通过物理或虚拟按键所执行的操作。按键识别算法在各类电子设备及系统中起到至关重要的作用&#xff0c;它确保了人机交互的有效性和准确性&…

Vue前端+快速入门【详解】

目录 1.Vue概述 2. 快速入门 3. Vue指令 4.表格信息案例 5. 生命周期 1.Vue概述 1.MVVM思想 原始HTMLCSSJavaScript开发存在的问题&#xff1a;操作麻烦&#xff0c;耦合性强 为了实现html标签与数据的解耦&#xff0c;前端开发中提供了MVVM思想&#xff1a;即Model-Vi…

Mysql-主从架构篇(一主多从,半同步案例搭建)

主从架构 主从架构有什么用&#xff1f; 通过搭建MySQL主从集群&#xff0c;可以缓解MySQL的数据存储以及访问的压力。 数据安全&#xff08;主备&#xff09;&#xff1a;给主服务增加一个数据备份。基于这个目的&#xff0c;可以搭建主从架构&#xff0c;或者也可以基于主…

redis进阶(一)

文章目录 前言一、Redis中的对象的结构体如下&#xff1a;二、压缩链表三、跳跃表 前言 Redis是一种key/value型数据库&#xff0c;其中&#xff0c;每个key和value都是使用对象表示的。 一、Redis中的对象的结构体如下&#xff1a; /** Redis 对象*/ typedef struct redisO…

c# .net8 香橙派orangepi + hc-04蓝牙 实例

这些使用c# .net8开发&#xff0c;硬件 香橙派 orangepi 3lts和 hc-04蓝牙 使用场景&#xff1a;可以通过这个功能&#xff0c;手机连接orangepi进行wifi等参数配置 硬件&#xff1a; 1、带USB口的linux开发板orangepi 2、USB 转TTL 中转接蓝牙&#xff08;HC-04) 某宝上买…

Flink:Temporal Table Function(时态表函数)和 Temporal Join

博主历时三年精心创作的《大数据平台架构与原型实现&#xff1a;数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行&#xff0c;点击《重磅推荐&#xff1a;建大数据平台太难了&#xff01;给我发个工程原型吧&#xff01;》了解图书详情&#xff0c;…

设计模式(十五)状态模式

请直接看原文:设计模式系列 ------------------------------------------------------------------------------------------------------------------------------- 前言 建议在阅读本文前先阅读设计模式&#xff08;十一&#xff09;策略模式这篇文章&#xff0c;虽说状态…

【MATLAB】MVMD_ MFE_SVM_LSTM 神经网络时序预测算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 MVMD_MFE_SVM_LSTM神经网络时序预测算法结合了多变量多尺度分解&#xff08;MVMD&#xff09;、多尺度特征提取&#xff08;MFE&#xff09;、支持向量机&#xff08;SVM&#xff09;和长…

小米消息队列的选型与实践

之前写了一篇关于消息队列的文章&#xff1a;《消息队列介绍与对比》&#xff0c;本文主要介绍消息队列在实际工作中的使用情况&#xff08;截止到2023年&#xff0c;因为我2023年离职了&#xff0c;后续的情况不了解了&#xff0c;哈哈&#xff09;。 市面上的多种消息队列都有…

node问题: command not found: nodemon

如何安装并使用 nodemon npm i -g nodemon 问题与解决方案&#xff1a; 问题&#xff1a;zsh: command not found: nodemon 解决方案&#xff1a; 在你的 package.json 中加入&#xff1a; "scripts": {"auto": "npx nodemon server.js" }…

单例模式及应用场景

如果希望自己的代码更优雅、可维护性更高以及更简洁&#xff0c;往往离不开设计模式这一解决方案。 在JS设计模式中&#xff0c;最核心的思想&#xff1a;封装变化&#xff08;将变与不变分离&#xff0c;确保变化的部分灵活&#xff0c;不变的部分稳定&#xff09;。 那么来…

[嵌入式系统-36]:龙芯1B 开发学习套件 -5- PMON常见命令

目录 0. 开机时按c键进入pmon模式 &#xff08;自启动模式时&#xff09; 1、帮助命令 h 2、显示设备信息 devls 3.重启&#xff1a;reboot 4、设置环境变量 set/unset 5.查询环境变量&#xff1a;env 6.网络设置相关命令&#xff1a; ①设置IP&#xff1a;ifconfig&am…

Linux 基础IO(1)内存文件

文章目录 铺垫文件的系统调用接口文件描述符缓冲区 铺垫 文件文件内容 文件属性访问文件之前&#xff0c;都要先打开文件&#xff0c;而要访问&#xff0c;修改&#xff0c;编辑文件&#xff0c;文件就必须加载到内存中程序运行起来变成进程&#xff0c;被CPU调度&#xff0c;…