RTSP协议讲解
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
RTSP的第三方库
live555简介 Live555 是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了 对标准流媒体传输协议如RTP/RTCP、RTSP、SIP等的支持。Live555实现 了对多种音视频编码格式的音视频数据的流化、接收和处理等支持,包括 MPEG、H.263+、DV、JPEG视频和多种音频编码。同时由于良好的设计, Live555非常容易扩展对其他格式的支持。目前,Live555已经被用于多款 播放器的流媒体播放功能的实现,如VLC(VideoLan)、MPlayer。
RTP协议
1.V:RTP协议的版本号,占2位,当前协议版本号为2。 2. P:填充标志,占1位,如果P=1,则在该报文的尾部 填充一个或多个额外的八位组,它们不是有效载荷的一 部分。 3. X:扩展标志,占1位,如果X=1,则在RTP报头后跟 有一个扩展报头。
4.
CC:CSRC计数器,占4位,指示CSRC 标识符的 个数。
RTP/RTCP协议介绍
RTP全名是Real-time Transport Protocol(实时传输协议),RTP被定 义为传输音频、视频、模拟数据等实时数据的传输协议,与传统的注重的高 可靠的数据传输的运输层协议相比,它更加侧重的数据传输的实时性,此协 议提供的服务包括数据顺序号、时间标记、传输控制等。 RTP通常与辅助控制协议RTCP一起工作,RTP只负责实时数据的传输, RTCP负责对RTP的通信和会话进行带外管理(如流量控制、拥塞控制、会话 源管理等)。
TEARDOWN
客户端发送请求: TEARDOWN rtsp://192.168.0.235/21.aac/ RTSP/1.0 CSeq: 5 User-Agent: MPlayer (LIVE555 Streaming Media v2011.03.14) Session: 00007578 解析:流媒体全部传输完毕后,客户端向服务端发出TEARDOWN请求,要求 终止该会话。 服务端响应请求: RTSP/1.0 200 OK CSeq: 5 Date: Wed, Aug 03 2011 07:01:57 GMT 解析:服务端响应TEARDOWN请求,发送回响应报文并终止该会话,至此该 会话结束,服务器继续等待下一个RTSP请求。
SETUP
服务端响应请求: RTSP/1.0 200 OK CSeq: 3 Date: Wed, Aug 03 2011 07:01:26 GMT Transport:RTP/AVP;unicast;destination=192.168.0.179;source=192.168.0.23 5;client_port=59558-59559;server_port=6970-6971 //传输协议+传播方式+目 的IP+源IP+客户端端口+服务端端口 Session: 00007578 //会话标识 解析:服务端接收到SETUP请求后建立会话,向客户端返回会话详细信息以 及会话标识。会话标识是唯一的。至此一个会话建立完成。
RTSP协议概念
RTSP(Real Time Streaming Protocol),实时流传输协议, 是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学、网景 和RealNetworks公司提交的IETF RFC标准。 RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或 RTP完成数据传输。它的语法和运作跟HTTP 1.1类似,HTTP与 RTSP相比,HTTP传送HTML,而RTSP传送的是多媒体数据。 HTTP请求由客户机发出,服务器作出响应;使用RTSP时,客户 机和服务器都可以发出请求,即RTSP可以是双向的。
PLAY
服务器响应请求: RTSP/1.0 200 OK CSeq: 4 Date: Wed, Aug 03 2011 07:01:26 GMT Range: npt=0.000Session: 00007578 RTP-Info: url=rtsp://192.168.0.235/21.aac/track1;seq=23335;rtptime=2147485332 解析:服务器返回确认报文并开始传输流媒体数据。数据传输一般使用UDP 发送。
DESCRIBE
SETUP
客户端发送请求: SETUP rtsp://192.168.0.235/21.aac/track1 RTSP/1.0 CSeq: 3 User-Agent: MPlayer (LIVE555 Streaming Media v2011.03.14) //客户端详细 信息 Transport: RTP/AVP;unicast;client_port=59558-59559 //传输协议+传播方式 (单播或多播)+接收数据的端口号。 解析:客户端向服务端发送SETUP请求,要求服务端设置会话属性和流媒体 传输方式以建立会话。包内容包含客户端软件详细信息,以及所需要的传输协 议(RTP),传播方式和客户端用来接收数据的端口号。
DESCRIBE
客户端发送请求: DESCRIBE rtsp://192.168.0.235:554/21.aac RTSP/1.0 CSeq: 2 Accept: application/sdp //定义描述类型 解析:该方法是客户端向服务端请求描述媒体的详细信息。包中说明需要 描述的媒体文件具体目录和名称,定义客户端能理解的描述类型,要求服 务端以SDP包方式来描述媒体信息
OPTIONS
服务端响应请求: RTSP/1.0 200 OK CSeq: 1 Date: Wed, Aug 03 2011 07:01:25 GMT //服务器当前时间 Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER //服务器支持的方法 解析:接收到OPTIONS请求后服务端发出响应报文。最开始返回状态码200 代表请求成功。然后返回服务器当前时间(GMT)和所支持的方法。
RTSP协议在网络中所处的位置
RTSP介绍
实时流协议(RTSP)建立并控制一个或几个时间同步的连 续流媒体,如音频和视频。尽管连续媒体流与控制流交叉是可能 的,RTSP 本身并不发送连续媒体流。换言之,RTSP 充当多媒 体服务器的网络远程控制。RTSP 提供了一个可扩展框架,实现 实时数据(如音频与视频)的受控、按需传送。数据源包括实况 数据与存储的剪辑。RTSP 用于控制多个数据发送会话,提供了 选择发送通道(如 UDP、组播 UDP 与 TCP 等)的方式,并提 供了选择基于 RTP 的发送机制的方法。 目前还没有 RTSP 连接的概念;服务器维护由识别符标识的 会话。RTSP 会话不会绑定到传输层连接,如 TCP。在 RTSP 会 话期间,RTSP 客户端可打开或关闭多个对服务器的可靠传输连 接以发出 RTSP 请求。它也可选择使用无连接传输协议,如 UDP。
Baidu Nhomakorabea
DESCRIBE
服务端响应请求: RTSP/1.0 200 OK CSeq: 2 Date: Wed, Aug 03 2011 07:01:26 GMT Content-Base: rtsp://192.168.0.235/21.aac/ Content-Type: application/sdp //描述类型 Content-Length: 515 //SDP包的长度 第一部分解析:这是服务端响应DESCRIBE请求所发回的报文。以上内容 说明描述的媒体文件具体路径和名称,以及所采用的描述类型(sdp),并定 义了SDP包内容的长度。以下的第二部分是SDP包的内容。
OPTIONS
客户端发送请求: OPTIONS rtsp://192.168.0.235:554 RTSP/1.0 CSeq: 1 User-Agent: RealMedia Player HelixDNAClient/10.0.1.65 (win32) //客户端 版本,运行的系统 ClientChallenge: ecfc7f451b599180ec25b706ddbd18ee ClientID: WinNT_6.1_10.0.1.65_play32_RN01_EN_686 CompanyID: YurviqDthCPgn+V3Ms/YiQ== GUID: 00000000-0000-0000-0000-000000000000 PlayerStarttime: [03/08/2011:11:26:10 08:00] //流媒体开始播放的时间 Pragma: initiate-session RegionData: 0 解析:此步骤是客户端向服务器询问有哪些方法可以使用。包里面说明了客 户端请求的文件所在的地址和端口,并说明播放器的版本和操作系统平台。
5. M: 标记,占1位,不同的有效载荷有不同的含义,对 于视频,标记一帧的结束;对于音频,标记会话的开始。 6. PT: 有效载荷类型,占7位,用于说明RTP报文中有效 载荷的类型,如GSM音频、JPEM图像等,在流媒体中大 部分是用来区分音频流和视频流的,这样便于客户端进 行解析。
RTP协议
7. 序列号:占16位,用于标识发送者所发送的RTP报文 的序列号,每发送一个报文,序列号增1。这个字段当下 层的承载协议用UDP的时候,网络状况不好的时候可以 用来检查丢包。同时出现网络抖动的情况可以用来对数 据进行重新排序,在helix服务器中这个字段是从0开始的, 同时音频包和视频包的sequence是分别记数的。 8. 时戳(Timestamp):占32位,时戳反映了该RTP报文的 第一个八位组的采样时刻。接收者使用时戳来计算延迟 和延迟抖动,并进行同步控制。 9. 同步信源(SSRC)标识符:占32位,用于标识同步信源。 该标识符是随机选择的,参加同一视频会议的两个同步 信源不能有相同的SSRC。 10. 特约信源(CSRC)标识符:每个CSRC标识符占32位, 可以有0~15个。每个CSRC标识了包含在该RTP报文有 效载荷中的所有特约信源。
RTSP的第三方库
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开 源计算机程序。它包括了目前领先的音/视频编码库libavcodec等。 libavformat:用于各种音视频封装格式的生成和解析,包括获取解码所需信息 以生成解码上下文结构 和读取音视频帧等功能; libavcodec:用于各种类型声音/图像编解码; libavutil:包含一些公共的工具函数; libswscale:用于视频场景比例缩放、色彩映射转换; libpostproc:用于后期效果处理; ffmpeg:该项目提供的一个工具,可用于格式转换、解码或电视卡即时编码等; ffsever:一个 HTTP 多媒体即时广播串流服务器; ffplay:是一个简单的播放器,使用ffmpeg 库解析和解码,通过SDL显示;
PLAY
客户端发送请求: PLAY rtsp://192.168.0.235/21.aac/ RTSP/1.0 CSeq: 4 User-Agent: MPlayer (LIVE555 Streaming Media v2011.03.14) //播放器信息 Session: 00007578 //会话标识 Range: npt=0.000- //播放时间范围,从第0秒到文件播放完 解析:会话建立后,客户端发出PLAY请求播放所申请的流媒体21.acc。传输 机制按照SETUP命令所设置的进行。PLAY请求可以发送多次,服务器会将请 求放入队列逐个处理。同时客户端可以定义播放的时间范围,比如从该流媒 体的第N秒播放到第M秒。
北京汉邦高科数字技术股份有限公司
RTSP协议讲解
2015-06-14
数字监控行业核心技术与产品提供商 www.hbgk.net
讲解内容
RTSP协议概念 RTSP协议在网络中所处的位置 RTSP介绍 RTSP的第三方库 RTP/RTCP协议介绍 SIP/SDP协议介绍 RTSP和onvif的关系