一种简单高效的RTSP流在线检测方法,不需要再过渡拉流就可以获取设备状态以及对应音视频通道与编码格式
平台如何检测一路RTSP流是否在线?
在之前的流媒体平台方案中,我们都是通过定时RTSP拉流的方式,走一个完整的RTSP流程:包括OPTIONS、DESCRIBE、SETUP、PLAY、RTP收流,这种方式去取流,然后取到流之后进行流解析,获取到对应的音视频数据格式,这就是一个完整的检测这个RTSP流是不是在线的一个方式。
这种方式有一个弊端,就是对资源的消耗太大了,如果说有1000个摄像头,那么每一个摄像头拉一下流,按照频率是5分钟(300s)检测一次,平均每秒要检测3个摄像头,那么它的不管是流量也好,还是对机器性能的消耗也好,都是一个比较大的占用。那么有没有一种方法不用去拉流,就像ping一下的方式,简单ping一下就可以获取到摄像机RTSP流的状态?同时,还能够把摄像机的音视频的编码情况获取到。
解决方法:DESCRIBE指令
我们先看一下一个普通的DESCRIBE指令的流程报文:
- 第一步【可直接第三步】:服务端向RTSP设备发送DESCRIBE请求
DESCRIBE rtsp://192.17.1.63:554 RTSP/1.0
Accept: application/sdp
CSeq: 2
User-Agent: EasyNVR
- 第二步【可直接第三步】:RTSP设备返回401需要密码
RTSP/1.0 401 Unauthorized
CSeq: 2
WWW-Authenticate: Digest realm="IP Camera(23306)", nonce="a946c352dd3ad04cf9830d5e72ffb11e", stale="FALSE"
Date: Fri, Apr 10 2020 19:07:19 GMT
- 第三步:服务端向RTSP设备发送带鉴权的DESCRIBE请求
DESCRIBE rtsp://192.17.1.63:554 RTSP/1.0
Accept: application/sdp
CSeq: 3
User-Agent: EasyNVR
Authorization: Digest username="admin", realm="IP Camera(23306)", nonce="a946c352dd3ad04cf9830d5e72ffb11e", uri="rtsp://192.17.1.63:554", response="8f1987b6da1aeb3f3744e1307d850281"
当然,这里服务端也可以直接第一步就发送带鉴权的DESCRIBE请求,也是合理省事的;
- 第四步:RTSP设备返回流媒体信息
RTSP/1.0 200 OK
CSeq: 3
Content-Type: application/sdp
Content-Base: rtsp://192.17.1.63:554/
Content-Length: 712v=0
o=- 1586545639954157 1586545639954157 IN IP4 192.17.1.63
s=Media Presentation
e=NONE
b=AS:5100
t=0 0
a=control:rtsp://192.17.1.63:554/
m=video 0 RTP/AVP 96
c=IN IP4 0.0.0.0
b=AS:5000
a=recvonly
a=x-dimensions:1920,1080
a=control:rtsp://192.17.1.63:554/trackID=1
a=rtpmap:96 H264/90000
a=fmtp:96 profile-level-id=420029; packetization-mode=1; sprop-parameter-sets=Z01AKI2NQDwBE/LgLcBAQFAAAD6AAAw1DoYACYFAABfXgu8uNDAATAoAAL68F3lwoA==,aO44gA==
m=audio 0 RTP/AVP 8
c=IN IP4 0.0.0.0
b=AS:50
a=recvonly
a=control:rtsp://192.17.1.63:554/trackID=2
a=rtpmap:8 PCMA/8000
a=Media_header:MEDIAINFO=494D4B48010300000400000111710110401F000000FA000000000000000000000000000000000000;
a=appversion:1.0
这样,我们就可以通过解析SDP内容,得到这路RTSP流的具体媒体信息了;
RTSP流检测结果
- 当服务端向设备发送的DESCRIBE没有得到响应,可以直接将RTSP设备状态设置为:设备离线(网络不通);
- 当服务端向设备发送了带鉴权的DESCRIBE报文,但是设备一直返回的都是“401 Unauthorized”,那可以将RTSP设备状态设置为:设备不可用(密码错误);
- 当服务端向设备发送了DESCRIBE,也获取到了对应的SDP信息,那么可以直接设置RTSP设备状态为:设备在线(Video:H.264/Audio:PCMA);
一种简单高效的RTSP流检测机制就此形成!
相关文章:
一种简单高效的RTSP流在线检测方法,不需要再过渡拉流就可以获取设备状态以及对应音视频通道与编码格式
平台如何检测一路RTSP流是否在线? 在之前的流媒体平台方案中,我们都是通过定时RTSP拉流的方式,走一个完整的RTSP流程:包括OPTIONS、DESCRIBE、SETUP、PLAY、RTP收流,这种方式去取流,然后取到流之后进行流解…...
24/11/22 项目拆解 艺术风格转移
我们有时候想把两种艺术风格整合,创造更具艺术特色的艺术品,人很难办到,但是人工智能可以,比如下面将艺术画的风格转移到照片上。 我们先来初步了解一下实现上述功能的数学原理 所谓艺术风格,其实就是边缘,颜色&#…...
数字赋能,气象引领 | 气象景观数字化服务平台重塑京城旅游生态
在数字化转型的浪潮中,旅游行业正以前所未有的速度重塑自身,人民群众对于高品质、个性化旅游服务需求的日益增长,迎着新时代的挑战与机遇,为开展北京地区特色气象景观预报,打造“生态气象旅游”新业态,助推…...
关于Redux的学习(包括Redux-toolkit中间件)
目录 什么是 Redux ? 我为什么要用 Redux ? 我什么时候应该用 Redux ? Redux 库和工具 React-Redux Redux Toolkit Redux DevTools 拓展 一个redux小示例 代码示例(很有用): Redux 术语 Actions Reducers Store Dis…...
【无人机】
GJI Mini 4 Pro学习 首次飞行使用 01 开箱 打开长飞套装 依次取出产品及配件 飞行器、DJI RC - N2(DJI RC 2)、桨叶/螺丝、云台保护罩、束桨器、电池、螺丝刀、USB-C快接线、单肩包、USB-C数据线、充电管家 02 准备飞行器 取下束桨器,…...
Zabbix7.0.6的容器镜像准备
准备Zabbix7.0.6部署所需的容器镜像。 更新时间:20241122 一、准备数据库镜像 1、核对版本支持 根据Zabbix官网文档requirements 可知,当前最新的Zabbix 7.0.6对PostgreSQL数据库的要求如下: support for PostgreSQL versions:- 17.X …...
利用 GitHub 和 Hexo 搭建个人博客【保姆教程】
利用 GitHub 和 Hexo 搭建个人博客 利用 GitHub 和 Hexo 搭建个人博客一、前言二、准备工作(一)安装 Node.js 和 Git(二)注册 GitHub 账号 三、安装 Hexo(一)创建博客目录(二)安装 H…...
React第四节 组件的三大属性之state
前言 状态 state适用于类式组件中,而再函数式组件中需要使用 useState HOOK 模拟状态; React的组件就是一个状态机,通过与用户的交互,实现不同的状态,根据不同的状态展现出不一样的UI视图 并不是组件中所有的属性 都是组件的状态…...
MongoDB进阶篇-索引(索引概述、索引的类型、索引相关操作、索引的使用)
文章目录 1. 索引概述2. 索引的类型2.1 单字段索引2.2 复合索引2.3 其他索引2.3.1 地理空间索引(Geospatial Index)2.3.2 文本索引(Text Indexes)2.3.3 哈希索引(Hashed Indexes) 3. 索引相关操作3.1 查看索…...
使用FFmpeg实现视频与GIF的画中画效果
用FFmpeg命令行工具将GIF动画作为画中画(Picture-in-Picture,简称PiP)叠加到视频上。FFmpeg是一个强大的多媒体框架,能够处理几乎所有格式的音频和视频文件。通过这个教程,你将学会如何将一个小的GIF动画循环播放&…...
车载信息安全框架 --- 车载信息安全相关事宜
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所有人的看法和评价都是暂时的,只有自己的经历是伴随一生的,几乎所有的担忧和畏惧,都是来源于自己的想象,只有你真的去做了,才会发现有多快乐。…...
Unreal5从入门到精通之EnhancedInput增强输入系统详解
前言 从Unreal5开始,老版的输入系统,正式替换为EnhancedInput增强型输入系统,他们之间有什么区别呢? 如果有使用过Unity的同学,大概也知道,Unity也在2020版本之后逐渐把输入系统也升级成了新版输入系统,为什么Unreal和Unity都热衷于升级输入系统呢?这之间又有什么联系…...
泛微E9与金蝶云星空的集成方案:实现审批流程与财务管理的无缝对接
泛微E9与金蝶云星空的集成方案:实现审批流程与财务管理的无缝对接 背景介绍: 在企业日常运营中,泛微OA-E9和金蝶云星空是两个关键的系统。泛微OA-E9是一款广受企业青睐的办公自动化软件,它通过流程管理、文档管理、协同办公等模…...
理解设计模式与 UML 类图:构建稳健软件架构的基石
在软件开发的广阔天地里,设计模式与 UML(统一建模语言)类图犹如两座灯塔,为开发者照亮前行的道路,指引着我们构建出高质量、可维护且易于扩展的软件系统。今天,就让我们一同深入探索单一职责、开闭原则、简…...
FastAPI重载不生效?解决PyCharm中Uvicorn无法重载/重载缓慢的终极方法!
文章目录 📖 介绍 📖🏡 演示环境 🏡📒 重载缓慢 📒📝 问题概述🚨 相关原因📝 解决方案一📝 解决方案二📝 解决方案三📝 解决方案四⚓️ 相关链接 ⚓️📖 介绍 📖 在使用FastAPI开发时,reload=True 本应让你在修改代码后自动重启服务,提升开发效率…...
最新子比主题zibll8.0开心版源码 无加密无后门
Zibll子比主题专为博客、自媒体及资讯类网站精心打造,以其简约而不失高雅的设计风格,为网站增添独特魅力与视觉美感。 8.0更新内容: 新增发帖选择板块、话题、标签时支持搜索,同时优化了选择栏目,更加方便快捷 新增小工具文章列表…...
【数据分析】认清、明确
1、什么是数据分析。 - 通过对大量的数据进行科学的分析。 - 得出结论,提出建议,辅助公司企业的决策。2、数据分析分为几步。 - 1.明确目的! - 2.收集数据!自己的数据! 自动化采集的数据! - 3.数据处理! - 4.数据分析!数据分析(业务)数据挖掘(代码算法…...
工业生产安全-安全帽第二篇-用java语言看看opencv实现的目标检测使用过程
一.背景 公司是非煤采矿业,核心业务是采选,大型设备多,安全风险因素多。当下政府重视安全,头部技术企业的安全解决方案先进但价格不低,作为民营企业对安全投入的成本很敏感。利用我本身所学,准备搭建公司的…...
人工智能(AI)与机器学习(ML)基础知识
目录 1. 人工智能与机器学习的核心概念 什么是人工智能(AI)? 什么是机器学习(ML)? 什么是深度学习(DL)? 2. 机器学习的三大类型 (1)监督式学…...
得物彩虹桥架构演进之路-负载均衡篇
文 / 新一 一、前言 一年一更的彩虹桥系列又来了,在前面两期我们分享了在稳定性和性能2个层面的一些演进&优化思路。近期我们针对彩虹桥 Proxy 负载均衡层面的架构做了一次升级,目前新架构已经部署完成,生产环境正在逐步升级中…...
墨语灵犀网络安全知识库:基于AI的威胁情报分析与解读
墨语灵犀网络安全知识库:让AI成为你的安全分析师 最近和几个做安全运营的朋友聊天,他们都在抱怨同一件事:每天面对海量的安全告警和晦涩的漏洞报告,眼睛都快看花了。一份新的漏洞描述扔过来,光是理解它到底在说什么、…...
Qwen3.5-2B模型环境搭建保姆级教程:从Anaconda安装到模型调用
Qwen3.5-2B模型环境搭建保姆级教程:从Anaconda安装到模型调用 1. 开篇:为什么选择这个教程? 如果你刚接触AI大模型,可能会被各种环境配置问题搞得头大。别担心,这篇教程就是为你准备的。我们将从最基础的Anaconda安装…...
weibo-rss:让微博内容主动找到你的高效订阅工具
weibo-rss:让微博内容主动找到你的高效订阅工具 【免费下载链接】weibo-rss 🍰 把喜欢的微博转为 RSS 订阅源 项目地址: https://gitcode.com/gh_mirrors/we/weibo-rss 在信息爆炸的时代,我们每天要处理大量碎片化内容。微博作为主流社…...
别再死记硬背分度表了!用Python+Arduino动手复现K型热电偶测温全过程
别再死记硬背分度表了!用PythonArduino动手复现K型热电偶测温全过程 温度测量是工程实践中最基础却又最关键的环节之一。想象一下,当你需要监控3D打印机热床温度、测量自制咖啡烘焙机的内部环境,或是记录太阳能热水器的水温变化时,…...
终极Markdown编辑器rich-markdown-editor:React + Prosemirror强强联合
终极Markdown编辑器rich-markdown-editor:React Prosemirror强强联合 【免费下载链接】rich-markdown-editor The open source React and Prosemirror based markdown editor that powers Outline. Want to try it out? Create an account: 项目地址: https://g…...
ClassGraph安全封装绕过:Narcissus与JVM-Driver深度分析
ClassGraph安全封装绕过:Narcissus与JVM-Driver深度分析 【免费下载链接】classgraph An uber-fast parallelized Java classpath scanner and module scanner. 项目地址: https://gitcode.com/gh_mirrors/cl/classgraph ClassGraph作为一款超快速的并行化Ja…...
嵌入式轻量级数值优化库:面向MCU的确定性参数寻优方案
1. 项目概述Optimization 是一个面向嵌入式平台的轻量级数值优化库,专为 Arduino 及兼容 MCU(如 STM32、ESP32、nRF52 等)设计,其核心目标是在资源受限环境下,对用户定义的单目标标量函数 f(x₁, x₂, ..., xₙ) 进行参…...
seo网站制作如何选择合适的关键词
SEO网站制作如何选择合适的关键词 在当今互联网时代,一个成功的网站不仅需要精美的设计,还需要强大的搜索引擎优化(SEO)技术。其中,关键词选择是SEO策略中至关重要的一环。选择合适的关键词不仅能够提高网站在百度等搜…...
AGV如何实现自主避障
下面按“传感器→建模→算法→安全机制→工程实现”的顺序,把AGV自主避障讲清楚。 一、整体架构概览 AGV要“自己绕开障碍”,至少要做三件事: 1)感知:知道“我在哪”“周围有什么”; 2)规划&…...
嵌入式ONPS协议栈:轻量级TCP/IP实现与优化
1. ONPS协议栈概述ONPS是一款专为资源受限的嵌入式系统设计的开源网络协议栈,由国内开发者完全自主开发实现。作为一名长期从事嵌入式网络开发的工程师,我第一次接触ONPS时就对其轻量级设计和完整的功能实现印象深刻。与常见的LwIP等协议栈相比ÿ…...
