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

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报头格式

首部结构体:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值