SRS服务器搭建以及展现配置说明

news2024/11/21 16:57:54

对于企业而言,数字化建设是一项全面的、系统的工程,不仅仅只是部署几套软件、实现办公自动化而已,尤其是大型企业,数字化的建设往往涉及到了服务器、硬件、软件、网络等一系列内容。如门禁系统和人力、认证等系统集成,实现人脸识别、自动打卡等,监控系统的摄像头设备集成,通过统一的监控分析进行查看,并能实现跨组织、跨区域的集中展现等。

最近在进行一个数据中台项目,根据客户需求需要将客户各个景区的监控设备进行统一视频采集,再通过数据分析平台搭建视频大屏,实现各个景区监控视频的实时查看,并能按照所属景区的不同进行切换,建立一个实时的、统一的视频监控中心

1总体说明

数据中台方案包括了MDM、ESB、DAP三个产品,主要实现企业基础数据、业务数据的采集汇聚与分析展现,实现企业核心业务指标的采集与分析,为企业运营分析、决策制定提供数据支持。

1.1集成架构 

数据中台方案主要包括MDM、ESB、DAP产品,通过产品的组合和集成实现数据的采集、加工、汇总、分析。

在数据中台方案中,核心的要点在于数据集成,包括了主数据和业务数据。主数据集成:将各个源头系统的基础数据通过ESB进行数据同步,汇总到MDM平台中进行全生命周期治理,为下游系统提供统一的基础数据,治理后基础数据再为数仓提供维度数据支持;业务数据汇聚:通过ESB数据总线将各个业务系统的核心指标数据进行抽取,并汇总到数仓中形成度量数据,并按照主题域结合维度数据构建数仓模型,基于数仓模型进行分析模型的构建,并通过可视化组件进行数据的可视化呈现,同时基于数仓模型可以对外提供数据服务,为下游系统提供业务数据支持。

1.2需求分析

本次视频流的集成主要是将现场摄像头采集的视频数据实时推送到数据中台服务器中,再由数据中台的分析大屏进行视频的实时播放,同时根据所处现场以及服务器的不同,在分析大屏中构建菜单,可以根据菜单进行位置以及服务器的选择,并能同时播放同一服务器下的多个摄像头的视频影像。

1.在数据中台中搭建环境进行摄像头视频的接收;

2.规划集成方案实现现场摄像头的视频流推送至数据中台服务器;

3.数据中台构建视频大屏,可以进行视频的播放,并且可以同时播放多个画面;

4.视频大屏具备切换功能,可以对摄像头现场以及服务器进行切换。

1.3技术方案

根据实际的业务需求,以及整体规划,主要从以下几方面进行技术选型考虑:

1.基于项目需求构建视频大屏,对现场摄像头进行实时视频采集和播放;

2.考虑后续与UMC产品的融合,能够基于UMC组件进行容器化部署;

3.支持Web端的交互,直接基于浏览器、H5等方式进行视频播放;

4.支持国标GB28181,并能基于GB28181进行格式转换,实现Web端播放,以及视频流的推、拉交互;

5.综合考虑,采用SRS4.0流媒体服务器平台进行视频流的集成中转。

2环境搭建

SRS是一个开源的流媒体服务器工具,安装部署相对简单,主要的工作是配置相关的服务器参数,实现视频流的推拉操作。

2.1SRS部署

1.介质下载:

http://ossrs.net/srs.release/releases/download.html

2.上传压缩包到服务器:

3.解压安装包:

4.解压后进入该目录下:

5.编译、安装:

6.启动运行(后台启动):

7.浏览器输入地址访问(打开防火墙的8080端口):

 

2.2参数配置

SRS相关配置文件,主要调整conf文件夹中push.gb28181.conf的内容:

其中:

1.rtc_server:服务器信息,需要将candidate改为服务器IP,由于视频流采用外网对接,建议改为外网IP; 

2.vhost:开启rtmp_to_rtc(on),实现rtmp到rtc的转换;

3.http_hooks:视频推流、拉流的校验流程,通过ESB流程进行服务器IP和token的校验。

2.3测试验证

通过SRS提供的web端地址,通过OBS进行推流,并通过SRS自带的Web端口地址进行播放。

1.OBS推流配置:

2.开始推流:

3.Web端播放:

3接口开发

接口开发主要是针对DAP进行视频大屏配置时页面的视频播放以及相关服务器菜单获取的流程开发过程。

3.1数据存储

在主数据平台扩展一类主数据,用于存储视频采集设备(摄像头)的相关信息。

1.建立景区主数据用于对采集设备进行区分,以及提供DAP的菜单展现:

2.在景区配置相关的IP白名单:

3.2接入鉴权

扩展视频推拉的鉴权接口,对推拉视频的相关地址进行鉴权处理。

1.IP校验

 

服务端在推流时调用hooks中配置的ESB接口,根据入参中的IP获取本次调用时的IP地址,并对IP地址与主数据中景区存储的IP进行校验,如果校验通过返回值为“0”,如果未通过返回值为“1”。

(1)采集端推流时通过http_hooks调用推流校验,入参为on_publish的入参格式:

(2)获取IP地址后与主数据中配置的白名单进行比对,如果不包含返回错误信息,如果包含返回正确信息。

IP通过:

IP未通过:

具体流程如下:

(1)获取入参的数据信息;

(2)获取MDM中的白名单地址;

(3)将IP与白名单中的地址进行匹配;

(4)针对匹配结果:成功/失败进行返回值的处理。

2.拉流校验

当DAP播放时,SRS根据hooks中配置的地址调用ESB接口,根据入参的param获取tokenId,通过tokenId去获取Redis中存储的视频流播放地址,如果获取到了视频流地址返回值为“0”,如果未通过返回值为“1”。

(1)DAP在播放时,SRS通过http_hooks调用拉流校验,入参格式:

(2)通过入参的tokenId从缓存中获取视频流地址,能获取则返回正确信息,如果获取不到则返回错误信息:

调用成功的返回信息: 

调用失败返回信息:

具体流程如下:

(1)DAP拉流时获取拉流的入参信息;

(2)截取校验的tokenId;

(3)读取缓存中存储的播放地址;

(4)针对匹配结果:成功/失败进行返回值的处理。 

3.3参数获取

开发DAP视频流拉取的访问地址,用于DAP调用拉取视频。

1.获取景区

服务地址如下:

http://localhost:9090/StreamingMedia/services/GetParameters/getparametersScenicspot

(1)入参:组织ID

(2)出参:

(3)如果没有查询到对应的景区信息,返回空值:

具体流程如下: 

(1)获取传入的组织ID;

(2)根据组织ID获取景区信息;

(3)根据查询的景区信息进行返回值的构造。

2.获取服务

服务地址如下:

http://localhost:9090/StreamingMedia/services/GetParameters/getparametersServices

(1)入参为景区ID:

(2)出参:

(3)如果没有获取到对应的服务器信息,返回空值:

具体的流程图如下:

(1)DAP调用接口时入参为景区ID;

(2)获取景区ID后通过景区ID获取该景区中的设备服务器;

(3)构造设备服务器以及对应的返回值返回给DAP。

3.播放地址

服务地址如下:

http://localhost:9090/StreamingMedia/services/GetParameters/getparametersStreaming

(1)入参是服务器ID:

(2)出参:

(3)如果没有获取到对应的播放地址信息,返回空值:

具体流程如下:

(1)首先通过服务器ID获取sip;

(2)通过服务器的ID调用流媒体服务器的通道接口,具体调用方式如下:

(3)根据输出的播放地址对count进行赋值,如果没有查询到数据则返回相应信息;

(4)如果查询到了数据进入循环的Redis数据写入,每个播放地址生成一个对应的tokenId并将tokenId做为key将数据写入到Redis中;

(5)返回相应的结果。

4效果展现

视频的采集最终会在DAP的视频大屏中呈现,在DAP预置有视频播放组件,可以通过读取视频流的方式进行视频播放。

4.1环境处理

由于DAP的视频播放是通过Web端播放的,而Web端播放视频是通过WebRTC的方式调用SRS的相关接口实现的,所以在DAP配置视频播放时需要开启相关的防火墙端口,主要端口包括:

1.1935:tcp端口,视频推流时访问SRS服务器的端口;

2.1985:tcp端口,视频播放时调用SRS的相关API的端口;

3.8080:tcp端口,SRS的Web端控制台访问端口,前期测试打开,通过DAP播放时不需要;

4.5060:udp端口,sip的udp监听端口,用于实现视频流的推送;

5.8090:udp端口,rtc服务的监听端口,用于DAP视频播放时的视频流访问。

4.2模拟推流

通过OBS的方式进行模拟,将本地视频推送的服务器上用于DAP的播放。

4.3视频播放

配置DAP的视频展现组件,用于页面视频的播放。

5总结分析

本次开发配置工作一方面是对项目工作的完善,另一方面也是在完善优化产品的相关功能,使产品在实际项目中能够满足更多的业务场景和需要,提升产品的完备性和全面性

5.1技术方案

数据中台方案是数通畅联的核心方案之一,主要通过MDM、DAP、ESB三个产品的组合实现企业基础数据、业务数据的汇聚整合,构建企业数据仓库,实现不同主题域的指标分析,并以图形图表的方式进行可视化展现,满足企业领导层对于企业业务、数据的实时查看,及时发现问题以及制定决策。而本次项目工作的完善也是对数据中台方案的一个补充,使数据中台方案能够支撑更多的业务场景。

5.2个人总结

对于视频摄像头的接入在之前的项目中有涉及到,只不过之前是在Portal门户和DAP中分别引入摄像头,实现摄像头视频的播放,并且之前采用的方式是直接引入插件的方式,即在页面中引入摄像头厂商提供的第三方插件,通过地址访问的方式直接连接摄像头进行播放。而本次技术方案采用SRS流媒体服务器的方式,相对更加全面和细致,同时基于GB28181的国标进行对接,使得配置更加灵活、更加标准,并且能够满足不同厂商、不同设备的接入需要,提高整体对接的统一化和标准化。

5.3优化完善

本次对接考虑到对接验证的需要以及和厂商的联测测试,所以采用的是直接在服务器上部署SRS服务,然后通过修改配置文件的方式实现视频流的集成对接,后续这种对接方式还需要进一步优化。本次之所以选择SRS服务器就是考虑到SRS可以进行容器化,后续需要基于UMC平台将SRS封装成组件,基于UMC组件进行容器化部署,使得SRS的部署、配置、维护过程更加方便和灵活。

每次项目中出现新的需求都是一次非常好的产品优化机会,所以在实施项目时,对于项目中的需要要充分分析考虑,考虑是否可以纳入到产品的范围,从而实现对产品的优化升级。同时在选择相关的组件和工具时也要考虑和现有方案、体系的融合,使解决方案更加全面、更加灵活,便于后续产品培训类项目的实施交付。 

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

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

相关文章

计算机视觉与图形学-神经渲染专题-非刚体NeRF II

《TiNeuVox:Fast Dynamic Radiance Fields with Time-Aware Neural Voxel》链接:https://jaminfong.cn/tineuvox/摘要作者通过表示具有时间感知体素特征的场景提出了一个辐射场框架,并将其命名为 TiNeuVox。作者引入了一个微小的坐标变形网络来模拟粗略的…

Flink-使用合流操作进行实时对账需求的实现

学Flink第八章多流转换的时候,进行合流操作.connect()使用到了第九章状态编程的知识,感觉总体不是很清晰,因此学完状态编程后现在进行重温并细化一些细节 业务背景 步骤一: 用户进行支付的时候,后台是需要调用第三方…

leetcode 834. Sum of Distances in Tree(树中的距离和)

无向连接的树(不一定是二叉树),求每个节点到其他节点的距离和。 返回一个数组,数组的第i个元素就是第i个节点到其他所有节点的距离之和。 思路: 涉及无向图的构造和遍历,树的前序后序遍历,问题…

论文复现-1:Perturbation CheckLists for Evaluating NLG Evaluation Metrics

以data2text任务为例,探讨generation metric矩阵对于一些句子扰动是否敏感,在多个维度上的敏感性如何? 1数据集 data2text数据集是由3025条samples构成,关键词由“ID”和“reference”构成。 每个子任务由对应的criteria&#…

python基础语法19-calendar模块

一、简介 有了time及datetime模块,再结合日历(Calendar)模块就可以更好的覆盖到时间处理的各个方面的应用。日历模块主要是用于处理日历及星期相关操作。 calendar模块的内置函数如下: 序号 函数及描述 1 calendar.calendar(yea…

Keras深度学习实战(42)——强化学习基础

Keras深度学习实战(42)——强化学习基础0. 前言1. 强化学习基础1.1 基本概念1.2 马尔科夫决策过程1.3 目标函数2. 在具有非负奖励的模拟游戏中获取最佳动作2.1 问题设定2.2 模型分析2.3 模型构建与训练3. 在模拟游戏中获取最佳动作3.1 问题定义3.2 模型分…

数据库原理及MySQL应用 | 数据表操作

数据表操作是数据库操作中最基本和最重要的操作。 图5-1是图书销售数据库booksale中存放的图书表books。 ■ 图5-1图书表books 01. 表的结构 表的结构也称为“型”(Type),用于描述存储于表中的数据的逻辑结构和属性。定义表就是指定义表的结构,使用数据…

Vue CLI系列之生成打包报告

文章の目录一、通过命令行参数的形式生成报告二、通过可视化的UI面板直接查看报告写在最后打包时,为了直观地发现项目中存在的问题,可以在打包时生成报告。生成报告的方式有两种: 一、通过命令行参数的形式生成报告 "scripts": {…

关于对计算机发展史、冯诺依曼体系、CPU基本工作流程以及关于编程语言的简单认识

关于计算机发展史: 关于计算机发展史,大体经历了从一般计算工具到机械计算机到目前的电子计算机的发展历程。 公元前2500年,算盘已经出现; 1694 年,德国博物学家 戈特弗里德莱布尼兹建造了“步进计算器”。 关于步进…

Djiango实现用户管理增删改成功能实战

1.0定义 前后端不分离模式 前后端分离是指前端页面看到的效果都是由后端控制,即后端渲染HTML页面,前端与后端的耦合度比较高 前后端分离模式 后端仅返回前端所需要的数据,不在渲染HTML页面,不在控制前端的效果,至…

八、kubernetes1.25应用升级、回滚

1、概述 用户希望应用程序始终可用,而开发人员则需要每天多次部署它们的新版本。在 Kubernetes 中,这些是通过滚动更新(Rolling Updates)完成的。 滚动更新 允许通过使用新的实例逐步更新 Pod 实例,零停机进行 Deploym…

Sentinel流控

Sentinel 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。 Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。 1.sentinel特性 Sentinel 具有以下特征: 丰富的应用场景: Sentinel 承接了…

最优化方法——最小二乘法与梯度下降法

目录 系列文章目录 一、问题 二、实验思路综述 1.实验工具及算法 2.实验数据 3.实验目标 4.实验步骤 三、最小二乘问题引入 1.最小二乘问题样例 2.最小二乘问题解决方案及数学模型化 3.相关线性代数知识导入 3.1 梯度 3.2 矩阵的逆 3.3 QR分解 四、最小二乘法 …

用 ChatGPT 运行 Python

最近,我一直在阅读一些关于ChatGPT的有趣文章。在一篇文章中,有人发明了一种新的语言,并让ChatGPT运行它。在另一篇文章中,有人在ChatGPT中运行一个虚拟机。后者启发我提出了下面这个问题。你能在ChatGPT中运行一个交互式Python会…

【docker常用命令】

一、帮助启动类命令 (1)启动docker systemctl start docker(2)停止docker systemctl stop docker(3)重启docker systemctl restart docker(4)查看docker状态 systemctl status…

【数据预处理】基于Pandas的数据预处理技术【california_housing加州房价数据集】_后9个任务

文章目录一.需求分析二.需求解决2.1 对第一个特征(收入中位数)排序后画散点图2.2 对第一个特征(收入中位数)画分位数图并分析2.3 【选做】对所有特征画分位数图并进行分析2.4 使用线性回归方法拟合第一个特征(收入中位…

基于c# asp.net电子病历管理系统的设计与实现

摘 要 网络的广泛应用给生活带来了十分的便利。所以把电子病历管理与现在网络相结合,利用net语言建设电子病历管理系统,实现电子病历管理的信息化。则对于进一步提高医院的发展,丰富电子病历管理经验能起到不少的促进作用。 电子病历管理系统…

AbstractQueueSynchronizer

AbstractQueueSynchronizer AbstractQueueSynchronizer 是基于 FIFO线程等待队列 的一个同步器开发框架。 这篇文章首先介绍同步器概念,然后介绍AQS的结构原理 什么是Synchronizer(同步器) 并发环境下,Synchronizer用于实现线…

Windows和Mac系统实现本地部署WebPageTest工具

在项目开发或者测试的过程中,由于没有上线,我们在公网上无法访问我们的网站,但同时我们又需要查看浏览器性能,这样我们就需要在本地部署WebPageTest工具以协助进行性能测试 具体实现步骤: Windows系统: …

FFT求多项式乘积

之前在b站上看到了一些介绍FFT的视频 《快速傅里叶变换(FFT)——有史以来最巧妙的算法?》 《这个算法改变了世界》 于是打算写一篇记录一下qwq(本博客中的截图基本上来源于第一个视频) Fast Fourier Transform 是一种能在O(nlogn)O(nlogn)…