rtsp/rtp/rtcp协议详解,附带抓包讲解及时间戳计算方法等细节

本文详细介绍了RTSP交互流程,包括OPTION、DESCRIBE、SETUP、PLAY、TEARDOWN等方法及其响应,以及RTP线程和RTCP线程的工作原理。同时,解释了鉴权规则、H264码流的profile-level-id、pps和sps计算,以及RTCP中的SR、RR和SDES包的格式。通过对抓包数据的分析,阐述了时间戳的计算方法和RTCP包的组合发送策略。
摘要由CSDN通过智能技术生成

RTSP交互流程

C表示rtsp客户端,S表示rtsp服务端

C->S:OPTION request //询问S有哪些指令可用

S->C:OPTION response //S回应信息中包括提供的所有可用指令

C->S:DESCRIBE request //要求得到S提供的媒体初始化描述信息

S->C:DESCRIBE response //S回应媒体初始化描述信息,主要是sdp

C->S:SETUP request //设置会话的属性,以及传输模式,提醒S建立会话

S->C:SETUP response //S建立会话,返回会话标识符,以及会话相关信息

C->S:PLAY request //C请求播放

S->C:PLAY response //S回应该请求的信息

S->C:发送流媒体数据

C->S:TEARDOWN request //C请求关闭会话

S->C:TEARDOWN response //S回应该请求

 

OPTION方法

  • 方法格式如下所示,OPTION方法由客户端发起,格式为:

OPTION URL RTSP版本号

CSeq: CSeq号(每发一条方法加一)

User-Agent:

 

  • 服务端给反馈,格式为:

RTSP版本号 状态码 状态字段

CSeq: 服务端发的CSeq号

Date: 时间 时区

Public: 可用方法

 

DESCRIBE方法

  • DESCRIBE方法由客户端发起,带鉴权的RTSP需要除OPTION方法外每次都发鉴权信息DESCRIBE方法要发送两次,一次是不带鉴权的格式为:

DESCRIBE URL RTSP版本号

CSeq: CSeq号(每发一条方法加一)

User-Agent:

Accept:

 

  • 服务端由于需要鉴权,所以以realm和nonce质询,realm是用户自定义字符串,nonce是包括\0长度为33的随机小写字母和数字组成的字符串
  • 格式为:

RTSP版本号 状态码 状态字段

CSeq: 服务端发的CSeq号

Date: 时间 时区

WWW-Authenticate: Digest realm=" ", nonce=""

 

  • 客户端收到第一次DESCRIBE的反馈后发送第二次DESCRIBE方法,并添加鉴权信息
  • 格式为:

DESCRIBE URL RTSP版本号

CSeq: CSeq号(每发一条方法加一)

Authorization: Digest username="", realm=" ", nonce="", uri=" ", response=" "

User-Agent:

Accept:

 

  • 服务端根据收到的信息判断鉴权信息是否正确。若不正确,则发送和不带鉴权的反馈一样的反馈。若正确则拼接SDP消息,格式为:

RTSP版本号 状态码 状态字段

CSeq: 服务端发的CSeq号

Date: 时间 时区

Content-Base: URL(用于拼接具体通道号URL的主URL,注意结尾带/)

Content-Type: 客户端发来的Accept

Content-Length: SDP包长度

 

v=0 //SDP版本号

o=- 1558173732855598 1 IN IP4 192.168.0.46 //[username] [session id] [version] [network type] [address type] [ip address]。 [username]没有,就填-。[session id]填写NTP时间戳。[version]填1。[network type]  一般为IN 。[address type]一般为IP4 。[ip address]填服务端IP地址。

s=IChinaE IPC Camera Stream//[session name ]按照用户自定义需求填写

i=stream1//[session info]按照相机url填写,通道几就写stream几,不同相机url不同

t=0 0//[start time] [end time] 实时流都填0

a=tool:LIVE555 Streaming Media v2010.07.29//a字段是可选字段,这6个a字段除了x-qt-text-inf要根据不同的通道号改变,其他都是固定不变的,也是live555添加的,为了安全起见先固定加上这些字段

a=type:broadcast

a=control:*

a=range:npt=0-

a=x-qt-text-nam:IChinaE IPC Camera Stream

a=x-qt-text-inf:stream1

m=video 0 RTP/AVP 96//[media] [port] [transport] [fmt list] 。[media] vedio或audio 。[port]先默认填0 。[transport]先默认填RTP/AVP。[fmt list]表示这路数据的编码类型,0-95是已定义好的编码类型,如果是这些类型,则填写相应的编号,否则,填写其他值并在rtpmap中指定编码类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值