rtsp协议解析

媒体协议标准

IPTV -- 流媒体协议族 实时流媒体协议:RTSP 一般作为媒体信道的远程控制使用,不参与媒体数据传输,也不做媒体的解析.
实时协议:RTP/RTCPRTP:按照RTP分组的方式传输媒体数据,协议规定了排序/丢包检查/以及媒体重建信息。媒体特定信息说明,包括其重建、解释有应用文档规定。RTCP:作为质量控制,成员控制等功能。会话描述协议:SDP在会话级别、媒体级别来描述传输媒体的具体信息,不参与传输媒体净荷应用文档规定了特定的媒体的处理信息

协议栈层次 1:RTP/RTCP推荐在UDP上承载,RTSP推荐在TCP上承载; 2:应用文档作为承载在RTP上,负责对具体的媒体进行解释;
3:SDP承载RTSP上,负责媒体会话的会话级、媒体级解释。

RTSP —— 媒体控制信道 RTSP是基于文本的协议,语法和HTTP类似;最大的区别 是一个为有状态的、一个是无状态的。 RTSP URL
提供了基于网页的发布链接;RTSP消息结构消息头部和消息体;RTSP方法为客户和服务器提供了交互的指令;RTSP状态客户状态和服务器状态;


URL举例:rtsp_URL = ( "rtsp:" | "rtspu:" )"//" host [ ":" port ] [ abs_path ]其中rtsp发布表示承载在tcp上,rtspu表示承载在udp上。发布方式:1:直接承载在网页上
冒险岛请求方式:先需要做媒体描述请求DESCRIBE rtsp:// :554/video/risk.mp4CSeq: 12:以sdp方式承载在网页上

6 消息结构举例消息头部:C->A:SETUP rtsp://audio.example.com/twister/audio.en RTSP/1.0CSeq: 1Transport:RTP/AVP/UDP;unicast;client_port=A->C:RTSP/ OKSession:Transport: RTP/AVP/UDP;unicast;client_port= ; server_port=1:status line请求Status line : CMD 资源 协议版本号响应Status line : 协议版本号 响应代码 响应描述

包体结构: 2:消息头部结构 语法RFC889规定,类似HTTP/SIP等协议
message-header = field-name ":" [ field-value ]其语义有协议自身规定,一次请求或者响应可以有多个头结构。包体结构:(在包头和包体之间有一个空行 — 仅仅含有回车换行)RTSP包体一般为SDP媒体会话信息,RTSP不做包体的解析,SDP包体由SDP协议解析。列如:C->M:DESCRIBE rtsp://server.example.com/demo/sound RTSP/1.0CSeq: 1Accept: application/sdpM->C:RTSP/ OKContent-type: application/sdpContent-Length: 44v=0o= IN IPs=RTSP Sessioni=See abovet=0 0m=audio 0 RTP/AVP 0

RTSP方法列表 method direction object requirement
DESCRIBE C->S P,S recommendedANNOUNCE C->S, S->C P,S optionalGET_PARAMETER C->S, S->C P,S optionalOPTIONS C->S, S->C P,S required(S->C: optional)PAUSE C->S P,S recommendedPLAY C->S P,S requiredRECORD C->S P,S optionalREDIRECT S->C P,S optionalSETUP C->S S requiredSET_PARAMETER C->S, S->C P,S optionalTEARDOWN C->S P,S required

A: option 方法,这是一个双向的方法,两端请求对方的能力集。
RTSP方法——rtsp交互指令A: option 方法,这是一个双向的方法,两端请求对方的能力集。OPTIONS * RTSP/1.0SEQ :1SESSION:B: DESC方法,用在客户端,向媒体源请求媒体发布信息。DESCRIBE rtsp://server.example.com/demo/sound RTSP/1.0CSeq: 1Accept: application/sdpC: setup 方法,用在客户端,建立媒体传输信道。该过程中,建立RTP的信道。SETUP rtsp://audio.example.com/twister/audio.en RTSP/1.0Transport:RTP/AVP/UDP;unicast;client_port=D: PLAY/PAUSE/TEARDOWN方法,客户端使用,控制媒体信息的传输动作。

10 在一次会话从建立第一次请求方法开始,直到TEARDOWN结束,会话ID 标示该次会话。再次重新启动会话,会话ID可能改变。如果存在多方通
PLAY rtsp://live.example.com/concert/audio RTSP/1.0CSeq: 3Session:PAUSE rtsp://live.example.com/concert/audio RTSP/1.0TEARDOWN rtsp://live.example.com/concert/audio RTSP/1.0E:GETPARA一般作为心跳消息使用GET_PARAMETER rtsp://live.example.com/concert/audio RTSP/1.0注释:在一次会话从建立第一次请求方法开始,直到TEARDOWN结束,会话ID标示该次会话。再次重新启动会话,会话ID可能改变。如果存在多方通话,在一个会议中,可以采用会议ID来标示会议。

11 VOD特殊方法的实现 对于RTSP协议,如果有多个媒体逻辑信道,其中setup方法需要对每个逻辑信 道进行参数设置。其他方法均统一控制使用。
1:SEEK、播放时间控制的实现Range header这个RTSP头,指定了播放的范围,不指定则默认从媒体的头开始,直至结尾。这个头信息在PLAY方法中携带。故此,在播放过程中,进行拖动操作,需要首先PAUSE这个会话。该范围一个使用ntp时间表示。C->S:PLAY rtsp://audio.example.com/audio RTSP/1.0CSeq: 836Session:Range: npt= //从20秒,播放到25秒Range: npt= //从30秒,播放到媒体结束

12 2:快进、快退、后退方法实现Scale header这个RTSP头,指定了相对于正常播放速率的比率。该头部参数,可以由RecordPlay方法携带;PAUSE这个会话。然后使用定义的Sacle值来设定Play。PLAY rtsp://audio.example.com/audio RTSP/1.0CSeq: 836Session:Scale: //两倍速率快进Scale: //1/2倍速率慢进Scale: //后退Scale: //两倍速度快退Scale: //半倍速度快退Scale和Speed的区别:Scale —— 不改变传输的比特率,采用丢弃数据的方式传输,使感受加快;有传输方向。Speed —— 改变传输的比特率,改变了媒体信道对带宽的要求;没有方向。

13 在仅仅需要单信道的场合,可以仅仅SETUP一次,只建立需要的信息的传 输信道。 例如:如下的媒体描述:
3:单信道模式在仅仅需要单信道的场合,可以仅仅SETUP一次,只建立需要的信息的传输信道。例如:如下的媒体描述:v=0o= IN IPs=RTSP Sessionm=audio 0 RTP/AVP 0a=control:rtsp://audio.example.com/twister/audio.enm=video 0 RTP/AVP 31a=control:rtsp://video.example.com/twister/video有两个媒体轨道组成一个媒体源,在只需要一个媒体轨道的时候,我们可以单独的建立一个媒体的信道。

14 RTSP状态机对于到快退快进等,也属于PLAYING状态。客户机:

15 RTP/RTCP —— 媒体信道 RTP数据包是二进制格式,包括RTP头和净荷组成;RTCP
规定了多种报告格式,用于质量、成员、会话控制的依据。RTP用以传送实时数据。提供净荷类型指示(数据类型和编码方式),数据分组序号、数据时戳、数据源标示。RTCP用以传送实时信号传递的质量参数,提供QOS监视机制;以及传输会议通讯中的参会者信息。应用文档该文档定义一组净荷类型码及其净荷格式、媒体编码的映射关系净荷格式规范具体定义每一种净荷如何在RTP协议中传输。

16 RTP分组RTP分组包括:RTP头部、RTP扩展头部、RTP净荷组成举例如图:

17 RTP头部 1:V=2 版本号 (2BIT) 2:P 填充指示位 (1BIT),
3:X 扩展指示位;4:CC 分信源数目指示;5:M 标志位   由应用文档解释说明;6:PT 净荷类型 映射了一种净荷格式(媒体编码),应用自身确定,不能解释得忽略;7:序列号:16比特,初始值为随即数,为接受方应用提供了丢包检测、恢复分组顺序的机制8:rtp timestp 32比特指媒体采样时间,具体解释有净荷文档规范规定,例如:mpeg4为显示时间;不一定是单调递增:例如mpeg的运动预测时包的顺序是编解码时间。9:同信源标志:标志媒体源10:分信源标志媒体组成的各个信号源标识。

18 RTP净荷规范文档 1:MPEG-4对象层 2:RTP 净荷文档规范 2:对rtp head的规范 3:对净荷的规范
对于不同的媒体类型,具体意义又净荷文档规范来解释。例如mp4 over rtp,rfc规范了两种方式: 基于对象的传输和基于es的传输.1:MPEG-4对象层2:RTP 净荷文档规范2:对rtp head的规范3:对净荷的规范

19 MPEG4分层模型

20 MP4 RTP净荷规范文档 1: RFC3016的规定将MPEG4-音视频码流直接映射 到RTP净荷中,由应用来保证系统同步;
3:将MPEG4 SL分组码流映射到RTP净荷中,同步由MPEG4系统同步;4:将MPEG4 传送层经过FLEXmux工具进行复用处理,映射到RTP净荷中;ISMA 1.0规范采用1,2两种方法进行净荷规范文档

22 SDP协议 1: 自身不参与发送,在其他协议中作为包体进行发送; 2:目的:告知会话存在;提供会话所需要的信息; 3:描述包括:
会话级:会话名和目的;会话缉获的时间区段构成会话的媒体传输层信息(地址、端口、格式)媒体级:媒体类型(音视频等)传送协议(rtp/udp/ip,h.320)媒体格式(h.261/264,mpegxx,wmv)媒体地址和端口5:协议格式文本级,UTF-8编码:=

23 重要的SDP描述会话级别:1: 会话源描述o=

给出会话的发起者以及会话标识、会话版本号;例如:o=mhandley IN IP2:链接数据c=
( )给出连接数据c=IN IPc=IN IP /127/33:时间描述t= r= < offset list >z= t=r=7d 1h 0 25h

24 媒体级别 4: 加密密钥 k= k=:
K=base64:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx该内容一般用于媒体头信息解析5: 属性字段a=:valuea=rtpmap:98 MP4V-ES/90000a=fmtp:98 profile-level-id=145媒体级别1:主要属性m= / m=video 49170/2 RTP/AVP 31参看RFC3016对mp4的媒体级别的描述

25 RFC 2326 - Real Time Streaming Protocol (RTSP)
参考文档RFC Real Time Streaming Protocol (RTSP)RFC SDP: Session Description ProtocolRFC RTP: A Transport Protocol for Real-Time ApplicationsRFC RTP Profile for Audio and Video Conferences with Minimal ControlRFC RTP Payload Format for Transport of MPEG-4 Elementary StreamsRFC RTP Payload Format for MPEG-4 Audio/Visual Streams

你可能感兴趣的:(rtsp协议解析)