【学习笔记】RTSP-Ovnif-GB28181

【学习笔记】RTSP-Ovnif-GB28181

一、RTSP_RTP_RTCP

RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,是TCP/IP协议体系中的一个应用层协议。

RTP协议详细说明了在互联网上传递音频和视频的标准数据包格式。它是创建在UDP协议上的。

RTCP是实时传输协议(RTP)的一个姐妹协议。RTP 使用一个 偶数 UDP port ;而RTCP 则使用 RTP 的下一个 port,也就是一个奇数 port。(RTCP 中的 SR (Sender Report发送端报告)控制分组包含NTP(网络时间)时间戳和RTP时间戳可用于同步音视频媒体流。)

简单理解:

RTP:视频数据传输

RTCP:视频质量控制

RTSP:视频控制(开始、暂停、快进等)

一次基本的RTSP交互过程如下,C表示客户端,S表示服务端。

img

​ 1、 首先客户端连接到流媒体服务器并发送一个RTSP描述请求(DESCRIBE request)

​ 2、 服务器通过一个SDP(Session DescriptionProtocol)描述来进行反馈(DESCRIBEresponse),反馈信息包括流数量、媒体类型等信息。

​ 3、 客户端分析该SDP描述,并为会话中的每一个流发送一个RTSP连接建立请求

(SETUPrequest),该命令会告诉服务器用于接收媒体数据的端口

​ 4、 服务器响应该请求(SETUP response)并建立连接之后,就开始传送媒体流(RTP包)到客户端。

​ 5、 在播放过程中客户端还可以向服务器发送请求来控制快进、快退和暂停等。最后,客户端可发送一个终止请求(TEARDOWN request)来结束流媒体会话

img

拓展:编码、封装

编码格式:支持H.265、H.264、MPEG4、MJPEG等多种编码格式;

封装格式:支持HLS(直播)、RTP、TS(广播电视)、FLV(监控系统)等主流的封装格式;

一个常见的视频流程如下:

摄像机——>网络——>计算机(显示器)

从功能上来讲,是下面的流程(为了更直观加了封装流程):

采集——>编码——>封装——>传输——>解封——>解码——>显示

YUV->H.264->RTP->UDP->RTP->H.264->YUV

二、Ovnif

ONVIF(Open Network Video Interface Forum)是一个全球性的开放性标准,旨在促进网络视频设备之间的互操作性。

视频监控中:IPC摄像头就是一个服务端,它对外提供接口服务(Web Services),并使用RTSP协议传输流媒体;客户端通过ONVIF协议规定的Web Services接口可以获取摄像头的RTSP地址,并通过RTSP地址拉取视频流观看视频监控、还可以根据ONVIF协议规范的Web Services接口管理摄像头。

Web Services就是对外提供接口的一个http服务,客户端通过调用Web Services提供的接口满足自己的需求,使用的协议都是基于http的。

ONVIF就是把各个功能定义出来,并且把功能对应的Web Services接口固定下来,包括数据格式,参数等,这样就形成了一套规范,各个厂商都遵循这套规范就可以互通了。

举例:海康威视摄像头与大华 NVR 通过 ONVIF 对接时,无需关注底层协议差异,直接按标准接口交互,而纯 RTSP 对接可能因 SDP(SDP 本质上是一种文本格式的元数据描述,用于告知接收端 “流的类型、编码方式、传输参数” 等信息,类似 “流的身份证”) 描述格式不同导致媒体协商失败。

三、GB28181

参考文献:史上最全的GB/T 28181介绍(国标28181资料大全) - 知乎

国家标准。采用了基于SIP(Session Initiation Protocol)的网络视频传输协议,规范了视频监控设备之间的通信方式。这使得来自不同厂商的设备可以实现统一的通信协议,并在同一平台上实现集成和管理。

GB28181协议会话通道实际上使用的是SIP协议,并且在SIP协议的基础之上做了些私有化处理。

SIP中一个比较重要的概念是用户代理(User Agent),指的是一个SIP逻辑网络端点,用于创建、发送、接收SIP消息并管理一个SIP会话。SIP用户代理又可分为用户代理客户端UAC(User Agent Client)和用户代理服务端UAS(User Agent Server)。UAC创建并发送SIP请求,UAS接收处理SIP请求,发送SIP响应。SIP协议会与许多其它的协议协同工作,如SIP报文内容发送会话描述协议(Session Description Protocol,SDP),SDP协议描述了会话所使用流媒体细节,如:使用哪个IP端口,采用哪种编解码器等等。

SIP的一个典型用途是:SIP会话传输一些简单的经过报文的实时传输协议流,RTP本身才是语音或视频的载体。

在GB28181协议中,联网系统在进行视音频传输及控制时应建立两个传输通道: 会话通道和媒体流通道。会话通道用于在设备之间建立会话并传输系统控制命令; 媒体流通道用于传输视音频数据, 经过压缩编码的视音频流采用流媒体协议RTP/RTCP传输。GB28181协议中具体通信协议结构图如下图1所示:

img

会话通道中,注册、实时视音频点播、历史视音频的回放等应用的会话控制采用SIP协议IETF RFC3261中规定的REGISTER、INVITE等请求和响应方法实现, 历史视音频回放控制采用SIP扩展协议IETF RFC29765规定的INFO方法实现,前端设备控制、信息查询、报警事件通知和分发等应用的会话控制采用SIP扩展协议IETF RFC34287规定的MESSAGE方法实现。

四、备注

GB28181:虽然 GB28181 标准本身定义了一套基于 SIP 的信令交互和媒体传输机制,用于实现设备之间的互联互通,但在实际应用中,一些 GB28181 平台或设备可能会借助 RTSP 来拉取视频流。比如,当 GB28181 平台需要与只支持 RTSP 输出的设备进行对接时,就需要通过 RTSP 协议从这些设备拉取视频流,然后再将其转换为符合 GB28181 标准的格式进行处理和分发。

ONVIF:ONVIF 协议在设备发现、能力查询等过程中,会获取设备的相关信息,其中就包括设备支持的视频流地址,而这个地址很多时候就是 RTSP 地址。通过获取到的 RTSP 地址,ONVIF 客户端可以使用 RTSP 协议来拉取设备的视频流,以实现视频监控、录像回放等功能。例如,ONVIF 设备(如摄像机)会暴露一个 RTSP 端点(URL),客户端通过 ONVIF 信令获取该端点后,再使用 RTSP 协议(如发送SETUP、PLAY、TEARDOWN等请求)控制媒体流的传输。可以理解为Ovnif就是RTSP的一层高级封装吧。

五、总结

维度RTSPGB28181ONVIF
协议性质流媒体传输协议(IETF 国际标准)中国安防行业应用层标准(国家标准)国际设备互操作应用层标准(开放性行业标准协议)
层级应用层(RFC 2326)应用层(基于SIP网络视频传输协议扩展)应用层(基于 Web Services)
信令机制信令层(Signaling Layer)负责建立、控制和释放媒体会话(如会话初始化、参数协商)文本格式命令信令命令:PLAY(开始播放)、PAUSE(暂停)、TEARDOWN(断开连接)
举例:获取媒体描述(DESCRIBE);返回关键字段:m=video(媒体类型)、a=rtpmap(编码格式 H.264)、a=control(流控制标识)

典型流程:OPTIONS查询能力 → DESCRIBE获取 SDP → SETUP建立传输通道 → PLAY启动流 → TEARDOWN断开连接。
SIP+XML(兼容 SIP 协议框架)
举例:平台向设备请求(INVITE)实时流,设备返回 200 OK,并在 SDP 中告知媒体端口(如 RTP 端口 5004),平台通过 RTP 接收流。
SOAP/XML(Web 服务接口)
信令通过 SOAP 协议封装为 XML 格式,用于设备发现、能力查询、流控制等。
举例:获取媒体流地址(GetStreamUri)客户端向设备服务接口发送 SOAP 请求;服务器响应(包含 RTSP URL)
媒体传输媒体层则在会话建立后实际传输和处理媒体数据。支持 RTP/UDP 或 RTCP(需配合使用)RTP/RTCP(PS 封装或裸流)RTSP/RTCP(可调用 RTSP 接口拉流)
应用场景通用流媒体(如视频会议、直播)国内安防监控系统互联跨厂商安防设备互操作

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

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

相关文章

stm32-c8t6实现语音识别(LD3320)

目录 LD3320介绍: 功能引脚 主要特色功能 通信协议 端口信息 开发流程 stm32c8t6代码 LD3320驱动代码: LD3320介绍: 内置单声道mono 16-bit A/D 模数转换内置双声道stereo 16-bit D/A 数模转换内置 20mW 双声道耳机放大器输出内置 5…

RAG技术全解析:从概念到实践,构建高效语义检索系统——嵌入模型与向量数据库搭建指南

一、RAG技术概述:为什么需要RAG? 1.1 什么是RAG? RAG(Retrieval-Augmented Generation)是一种结合检索与生成能力的AI架构。其核心思想是通过外部知识库动态增强大语言模型(LLM)的生成能力&…

【资源分享】手机玩转经典游戏!小鸡模拟器1.9.0:PSP/NDS/GBA完美运行!

阿灿今天给大家推荐一款小鸡模拟器,这是一个老款PC和掌上游戏机模拟器。完美模拟街机(fbamamemameplus).PS、PSP、FC(NES)SFC(SNES)、GBA、GBC、MD、NDS、DC、NGP、WS (WSC) PCE、ONS 等18款经典掌机游戏机。小鸡模拟器同时也提供海量热门的汉化版游戏免…

matlab脉冲信号并绘制波形2025.6.11

以下是一个使用MATLAB生成5V、10MHz脉冲信号并绘制波形的示例代码: % 5V 10MHz脉冲信号仿真 clc; clear; close all; % 参数设置 voltage = 5; % 信号幅度(V) frequency = 10e6; % 脉冲频率(10MHz) duty_cycle =

ElasticJob初探

依赖版本 JDK版本是&#xff1a;jdk17 springboot版本 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.2.4</version></parent>zookeeper elasticjo…

【Vue3】(三)vue3中的pinia状态管理、组件通信方式及总结、插槽

目录 一、vue3的pinia 1、什么是pinia&#xff1f; 2、为什么Vue3选择pinia&#xff1f; 3、使用pinia的好处 4、安装pinia 2、项目配置 3、存储/读取pinia中的数据 4、修改pinia中的数据 5、storeToRefs&#xff08;保持store中数据的响应式&#xff09; 6、getters 7、…

WEB3全栈开发——面试专业技能点P1Node.js / Web3.js / Ethers.js

一、Node.js 事件循环 Node.js 的事件循环&#xff08;Event Loop&#xff09;是其异步编程的核心机制&#xff0c;它使得 Node.js 可以在单线程中实现非阻塞 I/O 操作。 &#x1f501; 简要原理 Node.js 是基于 libuv 实现的&#xff0c;它使用事件循环来处理非阻塞操作。事件…

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…

web架构4------(nginx常用变量,nginx中英文自动匹配,lnmp网站架构,正向代理,反向代理,负载均衡)

一.前言 本期来介绍nginx最后几个知识点&#xff0c;看着要说的内容很多&#xff0c;其实一点也不多&#xff0c;都是所见即所得的东西。 二.nginx常用变量 2.1 常用变量 $args 请求中的参数&#xff0c;也叫查询参数&#xff0c;如www.123.com/1.php?a1&b2的$args就是…

openeuler系统(CentOs)图形化桌面黑屏/丢失(开启VNC服务冲突)

1. VNC服务开启如下&#xff1a; https://zhuanlan.zhihu.com/p/5049263261 在centos8系统上使用tigervnc-server搭建VNC_centos8 tigervnc-server-CSDN博客 2. 上述操作完成后&#xff0c;连接VNC仍会出现黑屏&#xff0c;则需要编辑/root/.vnc/xstartup&#xff1a; [运维…

MySQL:Prepared Statement 预处理语句

预处理语句&#xff08;Prepared Statements&#xff09;是 MySQL 中一种用于执行 SQL 查询的高效、安全的方法。通过使用预处理语句&#xff0c;可以显著提升查询性能&#xff0c;并防止 SQL 注入攻击。本文将详细介绍 MySQL 预处理语句的概念、使用方法及其优势。 一、预处理…

EPPLUS——CAD c#读写EXCEL的第三方库

EPPLUS(可支持NET35) 在 CAD 的 C# 二次开发中&#xff0c;使用 EPPLUS 库处理 Excel 文件具有以下显著优点&#xff0c;尤其在兼容性、便捷性和性能等方面契合 CAD 项目的需求&#xff1a; 1. 跨.NET 版本兼容性强&#xff0c;适配 CAD 多环境部署 多框架支持&#xff1a;EP…

Linux知识回顾总结----进程状态

本章将会介绍进程的一些概念&#xff1a;冯诺伊曼体系结构、进程是什么&#xff0c;怎么用、怎么表现得、进程空间地址、物理地址、虚拟地址、为什么存在进程空间地址、如何感性得去理解进程空间地址、环境变量是如何使用的。 目录 1. 冯诺伊曼体系结构 1.1 是什么 1.2 结论 …

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…

Android Test3 获取的ANDROID_ID值不同

Android Test3 获取的ANDROID_ID值不同 这篇文章来说明上一篇文章中说到的一个现象&#xff1a;在同一个项目中&#xff0c;创建不同的 app module&#xff0c;运行同一段测试代码&#xff0c;获取到的 ANDROID_ID 的值不同。 我也是第一次认真研究这个现象&#xff0c;这个还…

JSON 和 LabVIEW Data Types 互相转换

使用JSONtext C:\Program Files (x86)\National Instruments\LabVIEW 2021\examples\JDP Science\JSONtext JSONtext LabVIEW Data Types.vi

docker和docker-compose的版本对应关系怎么看?

docker和docker-compose的版本对应关系怎么看&#xff1f;最近在安装这两个工具&#xff0c;像知道他们的版本对应关系&#xff0c;查了不少资料才找到。 虽然 Docker 和 Docker Compose 的版本并不严格绑定&#xff0c;但是在某些情况下&#xff0c;新版本的 Docker Compose …

邮科ODM摄像头:多维度护航高铁安全系统方案解析

‌高铁作为现代交通的重要支柱&#xff0c;其安全稳定运行依赖于高效的监控体系。摄像头系统作为高铁安全管理的“视觉感知中枢”&#xff0c;凭借多场景覆盖、智能分析以及环境适应性设计&#xff0c;在行车安全、设备维护、乘客服务等方面发挥着不可或缺的作用。本文将从技术…

盒模型小全

CSS盒子模型详解 1. 定义 CSS盒子模型是用于描述HTML元素在页面中布局和表现的核心概念之一。在CSS中&#xff0c;所有HTML元素都被视为一个矩形的盒子&#xff0c;这些盒子封装了周围的HTML元素&#xff0c;并允许在其他元素和周围元素边框之间的空间放置内容。 2. 组成部分…

自定义鼠标效果 - 浏览器扩展使用教程

自定义鼠标效果 - 浏览器扩展使用教程 这里写目录标题 自定义鼠标效果 - 浏览器扩展使用教程功能特点安装方法Chrome/Edge浏览器 使用指南1. 更改鼠标光标样式2. 启用鼠标轨迹效果3. 自定义轨迹效果点状/彩虹/渐隐轨迹&#xff1a;表情轨迹&#xff1a; 管理自定义光标支持的文…