当前位置: 首页 > news >正文

一种基于屏幕分辨率的RTSP主子码流切换的多路视频监控的播放方案

技术背景:

用户场景下,存在多个监控场所的100路监控摄像头,例如:大华、海康、宇视、杭州宇泛的枪机、球机、半球、NVR、DVR等不同类型的监控设备,通过视频监控平台进行设备的管理,通过RTSP拉流的方案管理监控的每一路监控设备,通过客户端软件进行监控点位的直播查看(客户端软件或Chrome浏览器多窗口查看),一般用户的客户端显示屏为1920*1080的分辨率,一般监控多窗口分屏为1窗口,4窗口,8窗口,16窗口,32窗口,64窗口,不同厂家的监控摄像头都至少有2路码流(高清主码流一路,普清子码流一路),一般主码流配置为H264/1080P,一般子码流H264/D1,主子码流均可以根据用户的业务场景需要进行调整,一般普通用户查看预览的客户端软件所在的硬件支持的8路H264/1080P,超过之后一般硬件无法满足视频监控的解码需求。

技术问题:

  1. 一般用户的屏幕分辨率为1920*1080
  2. 用户的硬件配置支持的最大解码能力一般为8路H264/1080P/30FPS
  3. 超过4窗口的屏幕1920*1080,4窗口分屏模式下每个窗口的分辨率为:480*270,1080P高清解码对于用户监控小窗口查看并无实际意义
  4. 8窗口、16窗口以及以上对于视频监控场景查看是常见的使用需求
  5. 1080P高清解码会占用更多的硬件资源,如cpu,内存,显卡,以及耗电量
  6. 大华,海康,宇视,杭州宇泛的监控设备均不支持通过RTSP请求自动切换主子码流
  1. 关键概念解释:
  • 1080P:1920*1080视频分辨率
  • CIF:352*288视频分辨率
  • D1:4CIF 720×576视频分辨率
  • RTSP:视频监控设备的一种取流协议
  • 主码流和子码流:摄像头提供的2路码流模式,主码流是高像素分辨率模式,子码流是低像素低分辨率模式
  • 比值:比值 =(视频分辨率宽*高)/(屏幕分辨率宽*高),策略阀值为6参照的是4窗口和9窗口屏幕分辨率中间的某个整数值
  • ws-flv:ws-flv的协议的播放地址

方案介绍:

1)配置大华监控IPC的主码流视频参数:H264/1080P/30FPS/4096Kbps,子码流视频参数:H264/D1/20FPS/512Kbps
2)一般解码1路1080P主码流的所需要的硬件资源可以解码6路D1的子码流
3)添加大华设备管理,分别配置主码流的RTSP地址和子码流的RTSP的拉流地址,例如:大华主码流:rtsp://账号:密码@设备IP:554/cam/realmonitor?channel=1&subtype=0,大华子码流:rtsp://账号:密码@设备IP:554/cam/realmonitor?channel=1&subtype=1
4)播放客户端获取设备的主子码流的分辨率参数
5)客户端获取屏幕分辨率,例如:1920*1080,根据如下策略切换播放主码流,还是子码流
6)判断播放切分之后的窗口的分辨率和主码流分辨率的比值,比值 = (主码流分辨率宽*高)/(窗口宽*窗口高)
7)若是比值 > 6(一般比值6为4窗口以上或窗口占屏幕分辨率小于1/4)则切换子码流播放,说明主码流解码得到的视频画面对于所在的窗口的呈现是一种资源浪费
8)对于子码流播放的窗口,若窗口布局发生变化,比值 < 6,如从9窗口,点击某个窗口进行全屏播放,则切换为主码流播放
9)客户端也可根据解码能力的情况进行播放的主子码流的切换
10)播放一路子码流比播放一路主码流一般会更加的省电
11)可以适应不同的窗口布局和用户的不同的分辨率的场景
12)不需要媒体服务转码,只需要主子码流的切换即可使用更多窗口的监控查看的场景

核心流程图:

1)通过设备的网页地址登录设备,输入设备的账号和密码,在配置设备的网络信息时也可以按照此参照方案同步配置视频的参数信息
2)进入设备的视频参数配置选项,根据业务场景的需要,若是用户的屏幕分辨率为1920*1080则推荐的配置主码流的视频参数为:H264/1080P/30FPS/4096Kbps,子码流的视频参数为:H264/D1/20FPS/512Kbps
3)登录视频监控平台(或类似产品如宇泛软定义智能盒子产品)
4)管理员添加视频监控设备,输入设备的主码流的RTSP地址和子码流的播放RTSP地址
5)视频监控平台的设备管理服务校验RTSP地址参数是否有效,对应的RTSP地址的设备的网络是否ping通,若是通则认为添加的设备在线,若网络ping不通则认为设备离线,并定时ping此网络设备的网络地址
6)用户通过chrome浏览器登录视频监控平台,多窗口查看有权限的设备列表,并选择监控查看
7)客户端软件获取屏幕的分辨率,查询设备的主码流的分辨率
8)根据用户的选择的多分屏数,如4分屏,9分屏,16分屏等获取播放窗口的分辨率的数据
9)对比设备的主码流的分辨率和播放窗口的分辨率的比值,若是比值小于6,则获取主码流的ws-flv的播放地址,否则获取子码流的ws-flv的播放地址
10)从媒体服务器触发rtsp的取流接口,从媒体服务器获取媒体流转发的ws-flv的播放流进行播放
设置播放器的默认的解码方式为硬解码优先,若硬解码失败则使用CPU解码

相关文章:

一种基于屏幕分辨率的RTSP主子码流切换的多路视频监控的播放方案

技术背景&#xff1a; 用户场景下&#xff0c;存在多个监控场所的100路监控摄像头&#xff0c;例如&#xff1a;大华、海康、宇视、杭州宇泛的枪机、球机、半球、NVR、DVR等不同类型的监控设备&#xff0c;通过视频监控平台进行设备的管理&#xff0c;通过RTSP拉流的方案管理监…...

SpringBoot日志+SpringMVC+UUID重命名文件+Idea热部署

目录 【SpringBoot日志】 什么是日志&#xff0c;日志的作用 关于日志的基本信息&#xff0c;又有哪些呢&#xff1f; 关于日志的级别 Springboot内置SLF4J【门面模式】 和 logback【日志框架】 在配置文件中可以设置日志级别【以.yml为例】 SpringBoot 持久化的保存日…...

向日葵远程控制中的键盘异常问题

本文记录的是ubuntu 20.04 上&#xff0c; 向日葵的最高版本目前只有V 11.0.1.44968&#xff08;2022.02&#xff09; 我的被控制和 控制端都是上述环境&#xff1b; 起因&#xff0c;由于我昨天在控制端按下了 win/ 或者是其他的组合键 &#xff08;具体哪个键盘确实没有注…...

【iOS免越狱】利用IOS自动化web-driver-agent_appium-实现自动点击+滑动屏幕

1.目标 在做饭、锻炼等无法腾出双手的场景中&#xff0c;想刷刷抖音 刷抖音的时候有太多的广告 如何解决痛点 抖音自动播放下一个视频 iOS系统高版本无法 越狱 安装插件 2.操作环境 MAC一台&#xff0c;安装 Xcode iPhone一台&#xff0c;16 系统以上最佳 3.流程 下载最…...

聊聊“JVM 调优JVM 性能优化”是怎么个事?

所谓“调优”就是一个诊断和处理手段&#xff0c;最终的目标是让系统的处理能力&#xff0c;也就是“性能”达到最优化。 计算机系统中&#xff0c;性能相关的资源主要分为这几类&#xff1a; CPU&#xff1a;CPU 是系统最关键的计算资源&#xff0c;在单位时间内有限&#xf…...

再获Gartner认可!持安科技获评ZTNA领域代表供应商

近日&#xff0c;全球权威市场研究与咨询机构Gartner发布了《Hype Cycle for Security in China, 2023&#xff08;2023中国安全技术成熟度曲线&#xff09;》报告&#xff0c;对2023年的20个中国安全技术领域的现状与发展趋势进行了详细的分析与解读。 其中&#xff0c;持安科…...

微服务-Feign

文章目录 Feign介绍Feign的基本使用自定义Feign的配置Feign性能优化Feign最佳实践 Feign介绍 RestTemplate远程调用存在的问题&#xff1a;代码可读性差&#xff0c;java代码中夹杂url&#xff1b;参数复杂很难维护 String url "http://userservice/user/" order.g…...

jsp获取数据 jsp直接获取后端数据 获取input选中的值 单选 没 checked属性

let str0${showList}; let str1${showList}; 然后可以通过JSON.parse() 转 获取input选中的值 //goodsType 按类别 goods按货品var oneType $("input[ namecriteria1 ] ").val();//count按数量 totalprice按费用var twoType $("input[ namecriteria2 ] &q…...

React 中 keys 的作用是什么?

目录 前言&#xff1a;React 中的 Keys 的重要性 为什么 Keys 重要&#xff1f; 详解&#xff1a;key 属性的基本概念 用法&#xff1a;key 属性的示例 解析&#xff1a;key 属性的优势和局限性 优势&#xff1a; 局限性&#xff1a; key 属性的最佳实践 稳定的唯一标…...

代码随想录 | Day46

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 今日学习目标一、算法题1.完全背包问题2.零钱兑换 II3.组合总和 Ⅳ 学习及参考书籍 今日学习目标 完全背包问题 零钱兑换 II&#xff08;518&#xff09; 组合总和…...

word行内插入mathtype 公式后行距变大解决办法

现象 word行内插入mathtype 公式后行距变大 解决方法 选中要进行操作的那些行&#xff0c;依次单击菜单命令“格式→段落”&#xff0c;打开“段落”对话框&#xff1b;单击“缩进和间距”选项卡&#xff0c;将间距的“段前”和“段后”都调整为“0行”&#xff1b;将“如果…...

直播预告 | YashanDB 2023年度发布会正式定档11月2日,邀您共同见证国产数据库发展实践!

11月2日&#xff0c;YashanDB 2023年度发布会将于云端直播开启&#xff0c;发布会以 「惟实励新」 为主题&#xff0c;邀请企业用户、合作伙伴、广大开发者共同见证全新产品与解决方案。届时发布会将在墨天轮社区同步进行&#xff0c;欢迎大家报名&#xff01; 惟实求真。Yasha…...

一文读懂WebClient和RestTemplate的差异

自 Spring 5 以来&#xff0c;WebClient已成为Spring WebFlux的一部分&#xff0c;并且是发出 HTTP 请求的首选方式。它是经典RestTemplate的首选替代方案&#xff0c;后者自 Spring 5.0 以来一直处于维护模式。 本文将讨论 Spring WebClient和RestTemplate类之间的主要区别。…...

如何使用SpringBoot处理全局异常

如何使用SpringBoot处理全局异常 使用ControllerAdvice 和 ExceptionHandler处理全局异常 参考&#xff1a; ControllerAdvice ResponseBody Slf4j public class ExceptionHandler {ResponseStatus(HttpStatus.OK)org.springframework.web.bind.annotation.ExceptionHandler…...

【2023CANN训练营第二季】——通过一份入门级算子开发代码了解Ascend C算子开发流程

本次博客讲解的代码是Gitee代码仓的Ascend C加法算子开发代码&#xff0c;代码地址为&#xff1a; quick-start 打开Add文件&#xff0c;可以看到文件结构如下&#xff1a; 其中add_custom.cpp是算子开发的核心文件&#xff0c;包括了核函数的实现&#xff0c;展示了如何在Asc…...

建模仿真软件 Comsol Multiphysics mac中文版软件介绍

COMSOL Multiphysics mac是一款全球通用的基于高级数值方法和模拟物理场问题的通用软件&#xff0c;拥有、网格划分、研究和优化、求解器、可视化和后处理、仿真 App等相关功能&#xff0c;轻松实现各个环节的流畅进行&#xff0c;它能够解释耦合或多物理现象。 附加产品扩展了…...

深入理解强化学习——强化学习的历史:近代强化学习的发展

分类目录&#xff1a;《深入理解强化学习》总目录 在《深入理解强化学习——强化学习的历史》前面的文章中我们讨论了最优控制和试错学习学习的思想&#xff0c;接下来&#xff0c;我们将讨论一些在20世纪60年代和70年代&#xff0c;在试错学习计算和理论研究被相对忽视的时候&…...

移动端ViT新利器!苹果提出稀疏专家混合模型Mobile V-MoEs

文章链接&#xff1a;https://arxiv.org/abs/2309.04354 最近&#xff0c;专家混合模型MoE受到了学术界和工业界的广泛关注&#xff0c;其能够对任意输入来激活模型参数中的一小部分来将模型大小与推理效率分离&#xff0c;从而实现模型的轻量化设计。目前MoE已经在自然语言处理…...

【linux系统】服务器安装Pycharm

文章目录 安装pycharm步骤1. 进入pycharm官网2. 上传到服务器3. 安装过程 摘要&#xff1a;pycharm是Python语言的图形化开发工具。因为如果在Linux环境下的Python shell 中直接进行编程&#xff0c;其无法保存与修改&#xff0c;在大型项目当中这是很不方便的&#xff0c;而py…...

便利连锁:如何增加收益?教你一招轻松搞定!

自动售货机&#xff0c;作为零售行业的一项颠覆性技术&#xff0c;正逐渐改变着我们的购物方式和商业格局。这一创新技术不仅重新定义了零售业务模式&#xff0c;还为企业提供了更多的机会来满足不断演变的消费者需求。 客户案例 便利连锁店 成都某便利连锁店面临一系列挑战&am…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...