RTSP协议基本分析

目录

  • 一、介绍
  • 二、RTSP与HTTP
  • 三、RTSP推流基本过程
    • 1、OPTION 查询服务器端可用方法
      • 1.1、Client 请求
      • 1.2、Server 回复
    • 2、ANNOUNCE 发送媒体描述信息
      • 2.1、Client 请求
      • 2.2、Server 回复
    • 3、SETUP建立RTSP会话
      • 3.1、Client 请求(视频流)
      • 3.2、Server 回复(视频流)
      • 3.3、Client 请求(音频流)
      • 3.4、Server 回复(音频流)
    • 4、RECORD请求传送数据
      • 4.1、Client 请求
      • 4.2、Server 回复
    • 5、RTCP 播放控制、RTP视频数据
      • 5.1、Client 发送(RTCP)
      • 5.2、Client 发送(RTP)
    • 6、RTCP 播放控制、RTP音频数据
      • 6.1、Client 发送(RTCP)
      • 6.2、Client 发送(RTP)
    • 7、TEARDOWN关闭会话
      • 7.1、Client 请求
      • 7.2、Server 回复
  • 四、RTSP拉流基本过程
    • 1、OPTION 查询服务器端可用方法
      • 1.1、Client 请求
      • 1.2、Server 回复
    • 2、DESCRIBE 获取媒体描述信息
      • 2.1、Client 请求
      • 2.2、Server 回复
    • 3、SETUP建立RTSP会话
      • 3.1、Client 请求(视频流)
      • 3.2、Server 回复(视频流)
      • 3.3、Client 请求(音频流)
      • 3.4、Server 回复(音频流)
    • 4、PLAY请求开始传送数据
      • 4.1、Client 请求
      • 4.2、Server 回复
    • 5、RTP数据传送播放
      • 5.1、Server 发来 (视频流)
      • 5.2、Server 发来 (音频流)
    • 6、TEARDOWN关闭会话,退出

一、介绍

RTSP(Real-Time Stream Protocol )是一种基于文本的应用层协议,在语法及一些消息参数等方面,
RTSP协议与HTTP协议类似。
RTSP被用于建立的控制媒体流的传输,它为多媒体服务扮演“网络远程控制”的⻆色。尽管有时可以把
RTSP控制信息和媒体数据流交织在一起传送,但一般情况RTSP本身并不用于转送媒体流数据。媒体数据
的传送可通过RTP/RTCP等协议来完成。
一次基本的RTSP操作过程是:首先,客户端连接到流服务器并发送一个RTSP描述命令(DESCRIBE)。流
服务器通过一个SDP描述来进行反馈,反馈信息包括流数量、媒体类型等信息。客户端再分析该SDP描
述,并为会话中的每一个流发送一个RTSP建立命令(SETUP),RTSP建立命令告诉服务器客户端用于接收
媒体数据的端口。流媒体连接建立完成后,客户端发送一个播放命令(PLAY),服务器就开始在UDP上传送
媒体流(RTP包)到客户端。 在播放过程中客户端还可以向服务器发送命令来控制快进、快退和暂停等。
最后,客户端可发送一个终止命令(TERADOWN)来结束流媒体会话。

二、RTSP与HTTP

  1. RTSP引入了几种新的方法,比如DESCRIBE、PLAY、SETUP 等,并且有不同的协议标识符,RTSP
    为rtsp 1.0,HTTP为http 1.1。
  2. HTTP是无状态的协议,而RTSP为每个会话保持状态 session的概念。
  3. RTSP协议的客户端和服务器端都可以发送Request请求,而在HTTP 协议中,只有客户端能发送
    Request请求。
  4. 在RTSP协议中,载荷数据一般是通过带外方式来传送的(除了交织的情况),及通过RTP协议在不同的
    通道中来传送载荷数据。而HTTP协议的载荷数据都是通过带内方式传送的,比如请求的网页数据是在回应
    的消息体中携带的。
  5. 使用ISO 10646(UTF-8) 而不是ISO 8859-1,以配合当前HTML的国际化。
  6. RTSP使用URI请求时包含绝对URI。而由于历史原因造成的向后兼容性问题,HTTP/1.1只在请求中包
    含绝对路径,把主机名放入单独的标题域中。

三、RTSP推流基本过程

1、OPTION 查询服务器端可用方法

1.1、Client 请求

在这里插入图片描述

1.2、Server 回复

在这里插入图片描述

2、ANNOUNCE 发送媒体描述信息

2.1、Client 请求

在这里插入图片描述

2.2、Server 回复

在这里插入图片描述

3、SETUP建立RTSP会话

3.1、Client 请求(视频流)

在这里插入图片描述

3.2、Server 回复(视频流)

在这里插入图片描述

3.3、Client 请求(音频流)

在这里插入图片描述

3.4、Server 回复(音频流)

在这里插入图片描述

4、RECORD请求传送数据

4.1、Client 请求

在这里插入图片描述

4.2、Server 回复

在这里插入图片描述

5、RTCP 播放控制、RTP视频数据

5.1、Client 发送(RTCP)

在这里插入图片描述

5.2、Client 发送(RTP)

在这里插入图片描述

6、RTCP 播放控制、RTP音频数据

6.1、Client 发送(RTCP)

在这里插入图片描述

6.2、Client 发送(RTP)

在这里插入图片描述

7、TEARDOWN关闭会话

7.1、Client 请求

在这里插入图片描述

7.2、Server 回复

在这里插入图片描述

四、RTSP拉流基本过程

1、OPTION 查询服务器端可用方法

1.1、Client 请求

在这里插入图片描述

1.2、Server 回复

在这里插入图片描述

2、DESCRIBE 获取媒体描述信息

2.1、Client 请求

在这里插入图片描述

2.2、Server 回复

在这里插入图片描述

3、SETUP建立RTSP会话

3.1、Client 请求(视频流)

在这里插入图片描述

3.2、Server 回复(视频流)

在这里插入图片描述

3.3、Client 请求(音频流)

在这里插入图片描述

3.4、Server 回复(音频流)

在这里插入图片描述

4、PLAY请求开始传送数据

4.1、Client 请求

在这里插入图片描述

4.2、Server 回复

在这里插入图片描述

5、RTP数据传送播放

5.1、Server 发来 (视频流)

在这里插入图片描述

5.2、Server 发来 (音频流)

在这里插入图片描述

6、TEARDOWN关闭会话,退出

客户端发送TEARDOWN请求结束会话,与推流一样。

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

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

相关文章

找取照片上的25个特征点,并保存结果

找取照片上的25个特征点,并保存结果 import numpy as np import cv2 from matplotlib import pyplot as plt img cv2.imread(E:\Python-workspace\OpenCV\OpenCV/water1.png,1)#第一个参数为选择照片的路径,注意照片路径最后一个为正斜杠其他都为反斜杠…

P2P技术详解(一):NAT详解——详细原理、P2P简介

目录1. IPv4协议和NAT的由来2. NAT的工作模型和特点2.1、NAT的概念模型2.2、一对一的NAT2.3、一对多的NAT2.4、按照NAT端口映射方式分类2.4.1全锥形NAT2.4.2限制锥形NAT2.4.3端口限制锥形NAT2.4.4对称型NAT3. NAT的限制与解决方案3.1、IP端到端服务模型3.2、NAT的弊端3.3、NAT穿…

显示照片的二维直方图

显示照片的二维直方图 import cv2 from matplotlib import pyplot as plt img cv2.imread(E:\Python-workspace\OpenCV\OpenCV/water1.png,1)#第一个参数为选择照片的路径,注意照片路径最后一个为正斜杠其他都为反斜杠;第二个参数,其中1表示…

周五怎么表示 mysql_完美起航-MySQL找每个月最后一个星期五--函数定义与使用

数据库作业有一道题是这样子的:有一张名叫emp的表记录员工信息,其中有如下字段 HIREDATE 表示员工被雇用的日期:然后问题是这样的:q7.Show details of employee hiredates and the date of their first payday.(Paydays occur on…

silverlight学习总结【完】

以下内容是个人理解,不保证正确性。且假设使用C#,并且有一定的相关知识和XML基础。 silverlight是什么,能做什么 silverlight用XAML来做前端界面,用.NET或者JS作为程序脚本支持,在浏览器内外运行的应用。可以认为和FLA…

P2P技术详解(二):P2P中的NAT穿越(打洞)方案详解

目录1、内容概述2、反向链接技术:一种特殊的P2P场景(通信双方中只有一方位于NAT设备之后)3、基于UDP协议的P2P打洞技术详解3.1、原理概述3.2、典型P2P情景1: 两客户端位于同一NAT设备后面(即相同内网中)3.3…

显示照片的RGB直方图

显示照片的RGB直方图 import numpy as np import cv2 as cv from matplotlib import pyplot as plt img cv.imread(E:\Python-workspace\OpenCV\OpenCV/BEYOND.png,1)#第一个参数为选择照片的路径,注意照片路径最后一个为正斜杠其他都为反斜杠;第二个参…

mysql慢查询开启语句分析_mysql慢查询语句分析总结

我们经常会接触到MySQL,也经常会遇到一些MySQL的性能问题。我们可以借助慢查询日志和explain命令初步分析出SQL语句存在的性能问题通过SHOW FULL PROCESSLIST查看问题SHOW FULL PROCESSLIST相当于select * from information_schema.processlist可以列出正在运行的连…

P2P技术详解(三):P2P中的NAT穿越(打洞)方案详解(进阶分析篇)

目录1、NAT和NAPT2、NAT带来的问题3、P2P通信穿越NAT的技术、方法4、NAT穿越技术1:应用层网关4.1、原理4.2、限制5、NAT穿越技术2:中间件技术5.1、原理5.2、限制6、NAT穿越技术3:打洞技术(Hole Punching)6.1、原理6.2、方法6.2.1NAT行为类型与…

将两大小完全相同的照片进行加权混合对比

将两张大小完全相同的照片进行加权混合对比 import cv2 img1cv2.imread(E:\Python-workspace\OpenCV\OpenCV/water1.png,1)#第一个参数为选择照片的路径,注意照片路径最后一个为正斜杠其他都为反斜杠;第二个参数,其中1表示所选照片为彩色照片…

P2P技术详解(四):P2P技术之STUN、TURN、ICE详解

目录1、内容概述2、STUN详解2.1 RFC3489/STUN2.1.1 报文结构2.1.2实现原理2.1.3STUN功能举例2.2 RFC5389/STUN2.2.1STUN用途2.2.2报文结构2.3 RFC5389与RFC3489的区别2.4 新特性介绍2.4.1指纹机制2.4.2通过DNS发现服务器机制2.4.3认证和消息完整性机制2.4.4备份服务器机制2.5 R…

比较两张大小相同的照片的差异,返回数值

比较两张大小相同的照片的差异,返回数值 from PIL import Image import math import operator from functools import reducedef image_contrast(img1, img2):image1 Image.open(img1)image2 Image.open(img2)h1 image1.histogram()h2 image2.histogram()resul…

poj2115C Looooops

http://poj.org/problem?id2115 参考人家的 如下 如i65534,当i3时,i1 其实就是 i(655343)%(2^16)1 有了这些思想,设对于某组数据要循环x次结束,那么本题就很容易得到方程: x[(B-A2^k)%2^k] /C 即 Cx(B-A)(mod 2^k) 此…

黑色背景下,计算照片白色的区域面积和周长

黑色背景下,计算照片白色的区域面积和周长 import cv2 img cv2.imread(E:\Python-workspace\OpenCV\OpenCV/beyond.png,1)#第一个参数为选择照片的路径,注意照片路径最后一个为正斜杠其他都为反斜杠;第二个参数,其中1表示所选照…

通俗易懂:快速理解P2P技术中的NAT穿透原理

目录1、基础知识1.1、什么是NAT?1.2、为什么会有NAT?1.3、NAT有什么优缺点?2、NAT的实现方式2.1、静态NAT2.2、NAPT3、NAT的主要类型3.1、完全锥型NAT(Full Cone NAT,后面简称FC)3.2、受限锥型NAT&#xff…

java 负载均衡_java负载均衡 - 岁月静好I的个人空间 - OSCHINA - 中文开源技术交流社区...

作用对系统的高可用,网络压力的缓解,处理能力扩容的重要手段之一。服务器负载我们通常所说的负载是指:服务器负载软硬件负载服务器负载又分为:软件负载--硬件负载软件负载:通过在服务器上安装一些具有负载功能或模块的…

b tree和b+tree_B TREE实施

b tree和btreeB TREE及其操作简介 (Introduction to B TREE and its operations) A B tree is designed to store sorted data and allows search, insertion and deletion operation to be performed in logarithmic time. As In multiway search tree, there are so many nod…

黑色背景下,将照片内封闭空心图案的空心区域染成Cyan并保存

在黑色背景下,将照片内封闭空心图案的空心区域染色 import cv2 import numpy as np img cv2.imread(E:\Python-workspace\OpenCV\OpenCV/beyond.png,1)#第一个参数为选择照片的路径,注意照片路径最后一个为正斜杠其他都为反斜杠;第二个参数…

SDP协议基本分析(RTSP、WebRTC使用)

目录一、介绍二、标准 SDP 规范1. SDP 的格式2. SDP 的结构(1)会话描述(2)媒体描述三、WebRTC 中的 SDP一、介绍 SDP(Session Description Protocal)以文本描述各端(PC 端、Mac 端、Android 端…

黑色背景下,描绘照片的轮廓形状并保存

描绘照片的轮廓形状并保存 import cv2 from matplotlib import pyplot as plt # 1.先找到轮廓 img cv2.imread(E:\Python-workspace\OpenCV\OpenCV/beyond.png, 0) _, thresh cv2.threshold(img, 0, 255, cv2.THRESH_BINARY cv2.THRESH_OTSU) image, conturs, hierarchy c…