音视频——RTSP流媒体传输技术介绍及抓包解析

news2024/11/15 17:53:00

流式传输

流媒体技术:将声音影像向用户计算机 连续、不间断的进行传送,延时小。


抓包
route add 添加到指定网络的路由规则
route add [-net|-host] [网域或主机] netmask [mask] [gw|dev]
route del [-net|-host] [网域或主机] netmask [mask] [gw|dev]

RTP协议

都是基于TCP/IP 协议体系中的应用层协议
RTP 是由实时传输协议RTP,实时传输控制协议RTCP组成
基于多播或单播为用户提供连续媒体数据的实时传输服务,RTCP是控制部分,负责实时监控数据传输质量,为系统提供阻塞控制和流控制
由包头Header和载荷Payload两部分组成

RTMP:实时消息传输协议,基于tcp,主要用于flash平台和支持RTMP协议的流媒体服务器之间进行音视频和数据通信。(基于FLASH,无法用于IOS)(主流流媒体传输协议)
HLS:HTTP直播流技术,主要用于PC和Aplple中端,包括m3u8的索引文件,TS媒体分片文件,key加密串文件。
RTSP:实时流传输协议,基于UDP,用来传输音频、视频的多媒体串流协议,定义了一对多应用程序,如何有效通过IP网络传送多媒体数据。

流媒体相关技术

1)智能流技术
自动检测网络状况,将音视频属性调整到最佳
2)分流技术
一般在直播中使用,发送服务器将媒体流发送到各地的多个接收服务器,客户端就近访问
3)缓存技术
数据采用环形链表结构,数据包先缓存到本地,应对网络延迟和抖动等问题
4)内容分发网络(CDN)技术
将用户请求的流媒体内容发布到距离用户最近的网络边缘

视频直播流程

直播模块分为:视频录制端、视频播放端、视频服务器端
流程:采集->处理->编码和封装->推流到服务器->服务器流分发->播放器流播放

服务器流分发:
负责直播流的发布和转播分发功能,例如Nginx服务

RTSP协议刨析

基本概念

RTSP实时流传输协议(RFC2326标准)是基于文本的协议,使用UTF-8编码,行以CRLF中断(\r\n),是TCP/IP协议体系中的应用级协议
RTSP定义了一对多应用程序如何有效的通过IP网络传送多媒体数据,它位于RTP(数据传输)和RTCP(控制传输)之上,而流的内容,可以自行选择TCP或UDP,但它本身不发送连续流,只是充当多媒体服务器的网络远程控制
它的所有操作是通过服务器和客户端的消息应答机制完成的,客户机和服务器都可发送和回应请求。



HTTP和RTSP相比,HTTP请求由客户机发布,服务器做出响应,而使用RTSP时,客户机和服务器都可以发出请求,RTSP是双向的。

实时流媒体会话协议
SDP:会话描述协议
RTP:实时传输协议
一般使用UDP作为传输层
数据源:现场数据以及存储数据
协议目的在于控制多数据(音频或视频流)发送连接,为发送数据选择通道,如UDP、TCP。

RTSP流程抓包分析

options

client->server:客户端向服务端发OPTIONS,请求可用的方法

server->client:服务端回复客户端,消息中包含当前可用的方法

describe

client->server:请求媒体描述文件,一般通过url请求,格式为sdp

server->client:回复sdp文件,告诉客户端服务器有哪些音视频流,有什么属性,如编码器信息,帧率

setup

client->server:发起建立连接请求,准备接收音视频数据。其中描述了相关的数据传输配置,如UCP还是TCP,指定RTP、RTCP端口,单播还是组播等
server->client:根据请求,确定连接的具体信息

RTP/AVP是UDP形式传送数据,若RTP/AVP/TCP,则代表是TCP形式。

(2条消息) RTSP协议之TCP/UDP问题_rtsp udp_dosthing的博客-CSDN博客

play

client->server:请求播放媒体
server->client:回复200OK,之后通过之前指定的端口开始发送数据

TEARDOWN

client->server:请求结束播放
server->client:回复200 OK,再断开连接
RTSP 除此之外,还有 PAUSE,SCALE,GET_PARAMETER,SET_PARAMETER 等参数。

重要概念

1)集合控制:客户端仅需发送一条播放或暂停消息,就可同时控制音频和视频流
2)实体Entity:作为请求或回应的有效负荷传输信息,由head和body组成
3)容器文件:容纳多个媒体流的文件,MP4 avi等

消息格式详解

RTSP请求消息:由请求行、标题行中的各种标题域和主体实体组成

其中方法包括 OPTIONS、DESCRIBE、SETUP、PLAY、PAUSE、TEARDOWN 等。
URL 是接接收方的地址,例如:rtsp://192.168.0.1/video.264。
RTSP 版本一般都是 RTSP/1.0。
每行后面的 CRLF 表示回车换行,需要接收端有相应的解析,最后一个消息头需要有两
个 CRLF。
消息体是可选的,有的请求消息并不带消息体

RTSP应答消息

其中 RTSP 版本一般都是 RTSP/1.0。
状态码是一个数值,用于表示请求消息的执行结果,比如 200 表示成功。
短语是与状态码对应的文本解释。

再具体可参考PDF

RTP/RTCP协议讲解

RTP(Real-time Transport Protocol)

针对多媒体数据流的传输层协议,经常和RTCP控制协议一起使用,典型应用建立在UDP协议之上,但也可以在TCP协议上。它只保证实时数据传输,并不能提供可靠的传送机制,也不能提供流量控制阻塞控制(RTCP提供)。
虽然可靠性方面UDP不如TCP,但因为时延问题,RTP/RTCP/UDP用于音频/视频流媒体(UDP),而TCP用于数据和控制指令的传输



RTCP

RTCP工作机制

RTSP有独立传输的特性,在UDP的情况下前面表示客户端的接收 RTP 包的端口,后面表示客户端的接收 RTCP 包的端口,其中RTP端口必须是偶数,RTCP的端口必须是相邻的奇数。而TCP的情况下,采用同一个链路,则使用interleaved区分0表示 RTP 包,1 表示 RTCP 包

RTCP负责管理传输质量,在当前应用进程之间交换控制信息
在RTP会话期间,各参与者周期性发送一些RTCP包用来监听服务质量(含有已发送数据包数量、丢失数据包数量等统计资料)、交换信息,服务器利用这些信息动态改变传输速率等,和RTP结合,以有效的反馈和最小的开销使传输效率最佳化

RTCP数据报

在 RTCP 通信控制中,RTCP 协议的功能是通过不同的 RTCP 数据报来实现的,主要有如下几
种类型:
①SR:发送端报告,所谓发送端是指发出 RTP 数据报的应用程序或者终端,发送端同时也可
以是接收端。
②RR:接收端报告,所谓接收端是指仅接收但不发送 RTP 数据报的应用程序或者终端。
③SDES:源描述,主要功能是作为会话成员有关标识信息的载体,如用户名、邮件地址、电
话号码等,此外还具有向会话成员传达会话控制信息的功能。
④BYE:通知离开,主要功能是指示某一个或者几个源不再有效,即通知会话中的其他成员自
己将退出会话。
⑤APP:由应用程序自己定义,解决了 RTCP 的扩展性问题,并且为协议的实现者提供了很大
的灵活性。

常见问题

rtsp 可基于 rtp 之上,比如常见的视频流传输过程:视频压缩文件->rtp 打包->基于 udp的 rtsp 网络传输;
也可以不做成 rtp 包,直接基于 udp 传送,如视频压缩文件->基于 udp的 rtsp 网络传输

RTP over UDP 和 RTP over RTSP 有什么区别?
RTP over UDP 是 RTP 下层使用 udp 传输,
RTP over RTSP 是指的用 rtsp 协议建立会话,然后使用 RTP 协议传输数据

RTP over RTSP 是不是就是 RTP over TCP?
不是:RTP over RTSP 是指的用用 rtsp 协议建立会话,然后使用 RTP 协议传输数据;至于下面用 udp 还是 tcp 是不确定的

一般情况下一个点播需要 rtsp+rtp+rtcp 三个协议共同来实现
rtp 和 rtsp 协议是应用层的,tcp 和 udp 是传输层的,所以只能说 rtp over tcp/udp。
RTP,RTCP 数据和 RTSP 数据共享 TCP 数据通道,所以必须有一个标识来区别三种数据。
RTP 和 RTCP 数据会以$符号+1 个字节的通道编号+4 个字节的数据长度,共 6 个字节的前缀开始,RTSP 数据是没有前缀数据的。
RTP 数据和 RTCP 数据的区别在于第二个字节的通道编号,据观察 RTP 通道编号是偶数,RTCP通道编号是奇数
秒懂流媒体协议 RTMP 与 RTSP - 知乎 (zhihu.com) RTSP和RTMP的区别,后面总结下

https://blog.csdn.net/hanlunko2016/article/details/82730337

https://blog.csdn.net/acs713/article/details/19339707

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

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

相关文章

第9章 使用ContentProvider实现数据共享

第9章 使用ContentProvider实现数据共享 本章要点 理解ContentProvider的功能与意义ContentProvider类的作用和常用方法Uri 对 ContentProvider的作用理解ContentProvider与ContentResolver的关系实现自己的ContentProvider配置ContentProvider使用ContentResolver操作数据操…

宝藏!《联盟自控基础班筑基题库》(凤凰篇) 1-8章:甄选部分

本文内容,全部选自自动化考研联盟的:初试《自控基础班筑基题库》(凤凰篇)。 Part1:资料封面&目录 Part2:资料各个章节具体内容 第1章 自动控制的基本概念 第2章 控制系统的数学模型 第3章 控制系统的时域分析 第4章 根轨迹法…

某东东的jdgs算法分析--适合进阶学习

某东东的jdgs算法分析 这个贴主要还是对算法本身结构部分描述会多点,憋问,问就是过去太久了,很多逆向过程不一定能还原(主要是懒,不想原路再走一遍),所以可能有部分跳跃的内容,会给具…

【网络安全】IDOR之敏感数据泄露

未经许可,不得转载。 文章目录 正文正文 在测试“添加到收藏夹”功能时,我拦截了发送到服务器的请求,请求体如下: {“uriTemplate”:“asset/{assetId}/favorite”,“version”:“v2”,“type”:“POST”,“req_service”:“pict”,“url”:“asset/VICTIMS_ASS…

【论文阅读】DivTheft: An Ensemble Model Stealing Attack by Divide-and-Conquer(2023)

摘要 Recently, model stealing attacks(模型窃取攻击) are widely studied(广泛研究) but most of them are focused on stealing a single non-discrete model(窃取单个非离散模型), e.g., neural networks(神经网络). For ensemble models(对于集成模型), these …

分钟快速搭建分班查询系统,支持查班级群二维码

新学期已经开始了,老师们又要忙活起来了。但是,别担心,现在有个超方便的工具,能帮大家快速搞定分班的事情,还能让家长们一键加入班级群,省时又省力! 以前分班可麻烦了,老师们得一个…

集群的调度和策略

集群的调度: 怎么把pod部署到节点的方法。 调度的过程: scheduler是集群的调度器,主要任务就是把pod部署到节点上。 自动调度: 1、公平,保证每个可用的节点都可以部署pod 2、资源的高效利用,集群当中…

C/C++内存详解

欢迎来到 破晓的历程的 博客 ⛺️不负时光,不负己✈️ 文章目录 C/C内存模型C语言动态内存管理mallocrealloccallocfree C动态内存申请new 操作符delete 操作符注意事项用法示例 operator new和operator delete函数内存泄露 C/C内存模型 让我们先来看看这段代码&a…

四、SPI——2、NOR FLASH

一、NOR FLASH介绍 FLASH是常用的用于储存数据的半导体器件,它具有容量大,可重复擦写、按“扇区/块”擦除、掉电后数据可继续保存的特性。 FLASH是有一个物理特性:只能写0,不能写1,写1靠擦除。 FLASH主要有NOR Flash和…

【JavaEE初阶】JVM内存划分和类加载过程以及垃圾回收

目录 🌲内存划分 🚩堆(线程共享) 🚩栈 🚩元数据区 🍃类加载过程 🚩双亲委派模型 🎄垃圾回收机制(GC) 🚩找到谁是垃圾(不被继续…

纷享销客CRM渠道分销之多维度数据分析介绍

预设渠道报表驾驶舱 基于渠道分销场景,系统预设了一个全面的渠道订货数据驾驶舱,旨在通过直观的数据分析,为企业提供深度的市场洞察和业务决策支持。该驾驶舱提供渠道订货的概览,快速把握整体订货动态。 渠道订货波动分析&#…

Scratch 角色绘制

引言 在Scratch这款强大的可视化编程环境中,不仅可以通过编程来实现各种有趣的互动项目,还能利用内置的绘图编辑器来创造独一无二的角色。本文将引导你如何使用Scratch中的绘图编辑器,绘制出属于你自己的简单图形角色。 准备工作 首先&#…

【数据分享】2000—2023年我国250米分辨率逐月植被覆盖度(FVC)栅格数据

植被覆盖度(Fractional Vegetation Cover,简称FVC)是指植被(包括叶、枝、茎)在水平地面的垂直投影面积占研究区总面积的百分比。植被覆盖度是生态学、地理学、气候学等多个学科研究的基础数据,对于理解生态…

多线程——创建

线程的创建与启动 Java中,所有的线程对象都必须是Thread类或其子类的实例。 三种创建方式: 集成Thread类创建线程类 继承Thread类,重写run方法,run方法的方法体代表线程需要完成的任务,称为线程执行体。 创建子类的实…

鸿蒙开发5.0【Code Linter实现代码检查】

Code Linter针对ArkTS/TS代码进行最佳实践/编程规范方面的检查。 检查方法: 编辑器自带Code Linter。 在已打开的代码编辑器窗口单击右键点击Code Linter,或在工程管理窗口中鼠标选中单个或多个工程文件/目录,右键选择Code Linter执行代码检…

2024年医疗器械企业5款CRM系统对比评测

医疗器械行业是一个多学科交叉、知识密集型、资金密集型的高新技术产业,进入门槛较高,产品种类繁多,技术含量较高。 随着医改的深入推进,医疗器械集采常态化成为行业新常态,中国的医疗器械行业不仅面临着巨大的市场潜…

zabbix6.4配置监控k8s 1.28集群

zabbix6.4配置监控rke2 rancher k8s集群 1. 说明1.1 为什么要使用zabbix6.x监控k8s1.2 部署环境1.3 部署前的一些问题 2. 使用helm3部署zabbix proxy和zabbix agent2.1 添加仓库2.2 修改配置2.3 部署2.4 确认部署情况 3. 在zabbix web页面配置连接zabbix proxy3.1 添加Proxy代理…

kali (linux) 配置windows远程桌面(mstsc.exe)连接

Kali 安装 tightvncserver 一、软件说明 1) tightvncserver是一个轻量级,只能建立桌面,不能查看TTY7/TTY1正在显示的桌面,但x11vnc可以,相比x11vnc安全传输差一些。反之,x11 vnc:安全传输较好,但占用资源比 tightvncs…

PB级内存计算项目实战-富华保险

一、保险项目的基本介绍 项目名称:富华阳光人寿保险 1. 行业背景介绍 在保险行业中,最为核心技术就是精算,精算简单来说就是根据人的年龄来计算应交保费问题,通过精算,让整个保险行业更加专业化,精细化 从而取代之间依靠经验判断的方式 精算到目前为止,并不仅仅计算保费,主要包…

Leetcode 1143. 最长公共子序列 记忆化搜索 优化 C++实现

Leetcode 1143. 最长公共子序列 问题:给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度。如果不存在公共子序列,返回 0 。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对…