项目--基于RTSP协议的简易服务器开发(1)

news2024/9/24 6:20:48

RTSP协议简介:

RTSP(Real Time Streaming Prcotol)是位于TCP\IP体系应用层的数据传输协议,通常的RTSP协议包含 RTSP、RTP、RTCP协议。

一般而言:RTSP负责服务器与客户端之间的请求与响应

RTP负责服务器、客户端之间传输媒体数据

RTCP负责提供有关于RTP传输质量的反馈、确保传输的质量

(RTP默认为用偶数的端口传输数据;RTCP则使用下一个奇数的端口传输数据)

RTSP并不传输,而是借助于RTP协议进行数据传输

RTSP媒体服务协议框架:

RTSP报文类型:

请求报文:

常用方法:

OPTIONS: 获取服务器可提供的方法

DESCRIBE: 得到会话描述信息

SETUP:客户端请求建立会话,并确立传输模式

TEARDOWN: 客户端发起关闭会话请求

PLAY:客户端发起播放请求

RTSP的一次基本的交互过程:

  1. C->S option request 客户端询问服务器有哪些可用的方法

S->C option response 服务器回应可用的方法

  1. C->S DESCRIBE request 客户端请求服务器所传输媒体数据的初始化信息

S->C DESCRIBE response 服务器回应媒体数据的初始化信息(基本为SDP协议)

SDP(session describe protocol)会话描述协议,(一次网络会议、视频聊天都称为一次会话),通过该协议,通信双方可以得知:支持视频编码器、网络信息、等。
  1. C->S SETUP request 客户端端设置会话属性以及传输模式,请求建立会话

S->C SETUP response 服务器建立会话,返回会话标识以及相关信息

  1. C->S PLAY request 客户端请求播放

S->C 数据传输 发送数据

  1. C->S TEARDOWN request 客户端请求关闭会话

S->C TEARDOWN response 服务器回应关闭会话请求

描述:当客户端连接到服务器后,发送一个DESCRIBE request,服务器通过SDP反馈流数量、媒体类型等信息;
客户端根据SDP的信息,为会话中的每个流向服务器发送一个SETUPRE request,告诉其接收数据的端口;
服务器发送SETUP response建立连接后,开始发送媒体数据(RTP包。
且在播放的过程中,客户端可以向服务器发送请求从而实现快进、快退、暂停等功能,结束时客户端向服务器发送TEARDOWN request结束流媒体会话。

各个方法的交互实例:

option:

请求:

OPTIONS rtsp://192.168.1.431:554 RTSP/1.0\r\n
CSeq: 1\r\n
User-Agent: Lavf58.42.100\r\

各个字段解释:
OPTIONS : 标识请求命令的类型; rtsp url :请求服务器的URL
RTSP、1.0:标识了RTSP的版本号
CSeq:数据包序号,由于OPTION为第一个指令,所以为1
User-Agent:用户代理,让网络协议的对端来识别发起请求的用户代理软件的应用类型、操作系统、软件开发商以及版本号。

回复:

RTSP/1.0 200 OK\r\n
CSeq: 1\r\n
Public: OPTIONS, DESCRIBE, PLAY, PAUSE, SETUP, TEARDOWN, SET_PARAMETER, GET_PARAMETER\r\n
Date: Fri, Apr 10 2020 19:07:19 GMT\r\n
public:描述服务器所提供的方法; Date:标识日期;

describe:

用于向服务器请求会话描述信息(SDP)

请求类型、 服务器地址、版本

Accept:表示接受的数据格式,application/sdp表示接收sdp消息

CSeq:数据包序号,describe为2

请求:

DESCRIBE rtsp://192.17.1.63:554 RTSP/1.0
Accept: application/sdp
CSeq: 2
User-Agent: Lavf58.42.100

回复:

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

setup:

请求:

SETUP rtsp://192.17.1.63:554/trackID=1 RTSP/1.0

Transport: RTP/AVP/UDP;unicast;client_port=26968-26969

CSeq: 4

User-Agent: Lavf58.42.100

Authorization: Digest username="admin", realm="IP Camera(23306)", nonce="a946c352dd3ad04cf9830d5e72ffb11e", uri="rtsp://192.17.1.63:554/trackID=1", response="e29ca030062df6022faa77fefde40b28"

回复:

RTSP/1.0 200 OK

CSeq: 4

Session: 337474243;timeout=60

Transport: RTP/AVP/UDP;unicast;client_port=26968-26969;server_port=8284-8285;ssrc=4a7fb757;mode="play"

Date: Tue, JAN 10 2023 19:07:19 GMT

RTP协议简介

主要负责对于网络数据按照RTP数据包格式进行封包,并根据绑定的协议进行实时传输

数据传输流程:

RTP报头格式

首部结构体:

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

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

相关文章

【双U网络:传感器间自监督:全色锐化】

W-NetPan: Double-U network for inter-sensor self-supervised pan-sharpening (W-NetPan:用于传感器间自监督全色锐化的双U网络) 由于遥感数据的提供日益增多,可以通过全色锐化方法来处理空间-光谱限制。然而,融合…

【JavaGuide面试总结】操作系统篇·上

【JavaGuide面试总结】操作系统篇上1.什么是系统调用呢? 能不能详细介绍一下2.进程和线程的区别3.进程有哪几种状态?4.进程间的通信常见的的有哪几种方式呢?5.线程间的同步的方式有哪些呢?6.操作系统中进程的调度算法有哪些7.产生死锁的四个必要条件是什么?8.解…

KT148A语音芯片ic的供电电压以及电源输入的详细说明V1

目录 一、问题简介 二、详细说明 问题1:芯片的供电说明 问题2:我测试反而3.7V接到KT148A的7脚才能工作,正常吗? 问题3:分别测试了锂电池和USB供电,都不正常? 三、总结 完整的测试板如下图…

大型WMS系统源码 带扫码入库移动端源码

WMS的核心价值是降低成本,提高效率,能够反映和控制仓库各个环节的运作,实现事件前后的管理,为企业创造更高的效益。 WMS系统是智能仓库管理系统的缩写,WMS系统主要负责的是入库业务、出库业务、仓库调拨、库存调拨和虚…

Raspberry实践笔记—配置RobotFramework自动化测试环境

一般RobotFramework都是安装在Windows/Linux的PC机上,这里将简单介绍在树莓派硬件平台上配置RobotFramework的开发和运行环境。 树莓派上配置了自动化测试软件,可以考虑用多个这个廉价的“计算机”,开展并行的测试用例执行。成倍…

每日分享(免登录积分商城系统 动力商城 兑换商城源码)

​demo软件园每日更新资源,请看到最后就能获取你想要的: 1.Python教程2022:100天从新手到大师 完整版 Python 100天从新手到大师是一个Python入门教程,Python从入门到精通,专门为热爱python的新手量身定做的学习计划,100天速成pyt…

C++类和对象:拷贝构造函数和运算符重载

目录 一. 拷贝构造函数 1.1 什么是拷贝构造函数 1.2 编译器默认生成的拷贝构造函数 1.3 拷贝构造函数特性总结 二. 运算符重载 2.1 运算符重载概述 2.2 比较运算符重载&#xff08;> > < <&#xff09; 2.2.1 >运算符的重载 2.2.2 运算符的重载 2.…

面对海量的监控视频数据应该如何存储?

面对有些行业及工作特殊性&#xff0c;监控摄像头是必不可免的&#xff0c;面对成千上万的摄像头&#xff0c;每时每秒产生的视频数据&#xff0c;选择一个合理的存储方式&#xff0c;将会为您节省一大笔费用。而且&#xff0c;有些监控摄像头视频数据还需要按照国家要求存储30…

SpringCloud OpenFeign 源码分析

前言 由于公司正在高sky迁移&#xff0c;我们部门的老应用SpringBoot 1.x升级2.x&#xff0c;其中老的Neflix Feign也升级成了Spring Cloud OpenFeign&#xff0c;由于业务条线的各种高低版本以及服务之间调用等存在一些兼容性问题&#xff0c;于是看了下OpenFeign的源码&#…

【Web逆向】某津市公共资源交易平台链接加密分析

【Web逆向】某津市公共资源交易平台链接加密分析声明一、起因二、开始分析三、源码下载地址声明 本文章中所有内容仅供学习交流&#xff0c;相关链接做了脱敏处理&#xff0c;若有侵权&#xff0c;请联系我立即删除&#xff01; 一、起因 好奇抓取 天津市公共资源交易平台 的…

这个WPF DataGrid组件,可以让业务数据管理更轻松!(Part 1)

DevExpress WPF的DataGrid组件是专用于WPF平台的高性能XAML网格控件&#xff0c;该组件附带了几十个具有高影响力的功能&#xff0c;使开发者可以轻松地管理数据并根据也无需要在屏幕上显示数据。PS&#xff1a;DevExpress WPF拥有120个控件和库&#xff0c;将帮助您交付满足甚…

Telerik JustMock 2023 R1 Crack

Telerik JustMock 2023 R1 Crack 制作单元测试的最快、最灵活和模拟选项。 Telerik JustLock也很简单&#xff0c;可以使用一个模拟工具来帮助您更快地生成更好的单元测试。JustLock使您更容易创建对象并建立对依赖关系的期望&#xff0c;例如&#xff0c;互联网服务需求、数据…

常用的xpath

一、xpath 语法 简单看一下菜鸟教程即可 1、基本语法 XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。 下面列出了最有用的路径表达式&#xff1a; 表达式描述nodename选取此节点的所有子节点。/从根节点选取&#xff08;取子节点&#…

数据挖掘(1)--基础知识学习

前言 自20世纪90年代以来&#xff0c;随着数据库技术应用的普及&#xff0c;数据挖掘&#xff08; Data Mining &#xff09;技术已经引起了学术界、产业界的极大关注&#xff0c;其主要原因是当前各个单位已经存储了超大规模&#xff0c;即海量规模的数据&#xff0c;未来能够…

【设计模式】5.原型模式

概述 用一个已经创建的实例作为原型&#xff0c;通过复制该原型对象来创建一个和原型对象相同的新对象。 结构 原型模式包含如下角色&#xff1a; 抽象原型类&#xff1a;规定了具体原型对象必须实现的的 clone() 方法。具体原型类&#xff1a;实现抽象原型类的 clone() 方…

【IP技术】ipv4和ipv6是什么?

IPv4和IPv6是两种互联网协议&#xff0c;用于在互联网上标识和寻址设备。IPv4&#xff08;Internet Protocol version 4&#xff09;是互联网协议的第四个版本&#xff0c;是当前广泛使用的互联网协议。IPv4地址由32位二进制数构成&#xff0c;通常表示为4个十进制数&#xff0…

使用python测试框架完成自动化测试并生成报告-实例练习

练习一: 使用unittest 完成自动化测试并使用HttpTestRunner生成报告 1、写个简单的计算器功能&#xff0c;大小写转换功能&#xff0c;随机生成字符串功能 2、编写测试用例&#xff0c;不同的数据&#xff08;你能想到的所有测试用例&#xff09;&#xff0c;并进行断言。除0的…

GitHub 标星 15w,如何用 Python 实现所有算法?

学会了 Python 基础知识&#xff0c;想进阶一下&#xff0c;那就来点算法吧&#xff01;毕竟编程语言只是工具&#xff0c;结构算法才是灵魂。 新手如何入门 Python 算法&#xff1f; 几位印度小哥在 GitHub 上建了一个各种 Python 算法的新手入门大全。从原理到代码&#xf…

蒸汽波风格图不会画?AI作画帮你秒级出图

在最近几年&#xff0c;AI图像生成技术在视觉艺术领域得到了广泛应用&#xff0c;可以通过数据和机器学习技术来创作出非常有趣的艺术品。今天我就带来的图片风格是&#xff1a;蒸汽波混搭二次元。 蒸汽波混搭二次元图像的创作&#xff0c;大都是以现有的二次元图像作为基础&a…

配置CentOS 7

1&#xff1a;配置CentOS71.1&#xff1a;安装需注意如果出现类似提示&#xff0c;勾选复选框&#xff0c;并点击确定。1.2&#xff1a;选择安装项选择开始安装后&#xff0c;需等待….1.3&#xff1a;选择语言1.4&#xff1a;安装信息摘要大部分采用默认项设置自动分区网络设置…