关闭

RTSP网络流媒体数据控制协议实例分析一

标签: RTSP协议 网络媒体流传输
509人阅读 评论(0) 收藏 举报
分类:
一、RTSP协议概述

RTSP(Real-Time Stream Protocol )是一种基于文本的应用层协议,在语法及一些消息参数等方面,RTSP协议与HTTP协议类似。 

RTSP用于建立媒体流的控制传输,它为多媒体服务扮演“网络远程控制”的角色。尽管有时可以把RTSP控制信息和媒体流(数据)交织在一起传送,但一般情况RTSP并不用于转送媒体流数据,而是通过RTP/RTCP协议来完成流数据传输。 


二、一次基本的RTSP操作过程

1. 客户端Client连接到流服务器Server并发送一个RTSP描述命令(DESCRIBE)。注意,这个时候server端应该已经开始发送媒体流数据。

2. 流服务器通过一个SDP描述来进行反馈,反馈信息包括流数量、媒体类型等信息。

3. 客户端再分析该SDP描述,并为会话中的每一个流发送一个RTSP建立命令(SETUP)RTSP建立命令告诉服务器客户端用于接收媒体数据的端口。

4. 流媒体连接建立完成后,客户端发送一个播放命令(PLAY),服务器就开始在UDP上传送媒体流(RTP包)到客户端。 

5. 在播放过程中客户端还可以向服务器发送命令来控制快进、快退和暂停等。

6. 客户端可发送一个终止命令(TERADOWN)来结束流媒体会话

三、项目实例

下面是本人一个高清视频传输的项目打印信息,供大家学习参考。

 

client command: /home/root/rtsp_client -F /tmp/clientCh0.h264 -b 1843200 rtsp://192.168.1.3:8554/avstream &

Opening connection to 192.168.1.3, port 8554...

 

...remote connection opened

C-->S 用于得到服务器提供的可用方法; 

Sending request: OPTIONS rtsp://192.168.1.3:8554/avstream RTSP/1.0

CSeq: 2

User-Agent: /home/root/rtsp_client (LIVE555 Streaming Media v2014.12.17)

 

S->C 服务器的回应信息会在Public字段列出提供的方法

Received 125 new bytes of response data.

Received a complete OPTIONS response:

RTSP/1.0 200 OK

Server: VLC/2.0.10

Content-Length: 0

Cseq: 2

Public: DESCRIBE,SETUP,TEARDOWN,PLAY,PAUSE,GET_PARAMETER

 

C-->S 客户端向服务器端发送DESCRIBE,用于得到URI所指定的媒体描述信息,一般是SDP信息。客户端通过Accept头指定客户端可以接受的媒体述信息类型。

Sending request: DESCRIBE rtsp://192.168.1.3:8554/avstream RTSP/1.0

CSeq: 3

User-Agent: /home/root/rtsp_client (LIVE555 Streaming Media v2014.12.17)

Accept: application/sdp  用于指定客户端可以接受的媒体描述信息类型

 

S->C 服务器回应URI指定媒体的描述信息

Received 210 new bytes of response data.

Have received 210 total bytes of a DESCRIBE RTSP response; awaiting 708 bytes more.

Received 708 new bytes of response data.

Received a complete DESCRIBE response:

RTSP/1.0 200 OK

Server: VLC/2.0.10

Date: Wed, 17 Jun 2015 12:19:22 GMT

Content-Type: application/sdp

Content-Base: rtsp://192.168.1.3:8554/avstream

Content-Length: 708

Cache-Control: no-cache

Cseq: 3  指定了RTSP请求回应对应的序列号,在每个请求或回应中都必须包括这个头字段。对每个包含一个给定序列号的请求消息,都会有一个相同序列号的回应消息。 

 

具体的SDP信息

v=0

o=- 15648852339074415390 15648852339074415390 IN IP4 ma-virtual-machine

s=Unnamed

i=N/A

c=IN IP4 0.0.0.0

t=0 0

a=tool:vlc 2.0.10

a=recvonly

a=type:broadcast

a=charset:UTF-8

a=control:rtsp://192.168.1.3:8554/avstream

m=video 0 RTP/AVP 96

b=RR:0

a=rtpmap:96 H264/90000

a=fmtp:96 packetization-mode=1;profile-level-id=42c01f;sprop-parameter-sets=Z0LAH9oBQBboQAAA+kAAOpgDxgyo,aM4yyA==;

a=control:rtsp://192.168.1.3:8554/avstream/trackID=6

m=audio 0 RTP/AVP 96

b=RR:0

a=rtpmap:96 mpeg4-generic/48000/2

a=fmtp:96 streamtype=5; profile-level-id=15; mode=AAC-hbr; config=0990; SizeLength=13; IndexLength=3; IndexDeltaLength=3; Profile=1;

a=control:rtsp://192.168.1.3:8554/avstream/trackID=7

 

Opened URL "rtsp://192.168.1.3:8554/avstream", returning a SDP description:

v=0

o=- 15648852339074415390 15648852339074415390 IN IP4 ma-virtual-machine

s=Unnamed

i=N/A

c=IN IP4 0.0.0.0

t=0 0

a=tool:vlc 2.0.10

a=recvonly

a=type:broadcast

a=charset:UTF-8

a=control:rtsp://192.168.1.3:8554/avstream

m=video 0 RTP/AVP 96

b=RR:0

a=rtpmap:96 H264/90000

a=fmtp:96 packetization-mode=1;profile-level-id=42c01f;sprop-parameter-sets=Z0LAH9oBQBboQAAA+kAAOpgDxgyo,aM4yyA==;

a=control:rtsp://192.168.1.3:8554/avstream/trackID=6

m=audio 0 RTP/AVP 96

b=RR:0

a=rtpmap:96 mpeg4-generic/48000/2

a=fmtp:96 streamtype=5; profile-level-id=15; mode=AAC-hbr; config=0990; SizeLength=13; IndexLength=3; IndexDeltaLength=3; Profile=1;

a=control:rtsp://192.168.1.3:8554/avstream/trackID=7

 

C-->S 用于确定转输机制,建立RTSP会话。客户端能够发出一个SETUP请求为正在播放的媒体流改变传输参数,服务器可能同意这些参数的改变。若是不同意,它必须响应错误"455 Method Not Valid In This State"

Created receiver for "video/H264" subsession (client ports 46954-46955)

Created receiver for "audio/MPEG4-GENERIC" subsession (client ports 51830-51831)

Sending request: SETUP rtsp://192.168.1.3:8554/avstream/trackID=6 RTSP/1.0

CSeq: 4

User-Agent: /home/root/rtsp_client (LIVE555 Streaming Media v2014.12.17)

Transport: RTP/AVP;unicast;client_port=46954-46955  包含客户端接受的转输选项列表,包括传输协议,地址端口,TTL等。服务器端也通过这个头字段返回实际选择的具体选项

 

 

S->C 服务器端对SETUP Request产生一个Session ID

Received 271 new bytes of response data.

Received a complete SETUP response:

RTSP/1.0 200 OK

Server: VLC/2.0.10

Date: Wed, 17 Jun 2015 12:19:22 GMT

Transport: RTP/AVP/UDP;unicast;client_port=46954-46955;server_port=47326-47327;ssrc=F162517D;mode=play

Session976b50594e7fb9f1;timeout=60  Session ID由服务器在SETUP的回应中选择的,客户端一旦得到Session ID后,在以后对Session(会话)的操作请求消息中都要包含Session ID. 

Content-Length: 0

Cache-Control: no-cache

Cseq: 4

 

 

Setup "video/H264" subsession (client ports 46954-46955)

Sending request: SETUP rtsp://192.168.1.3:8554/avstream/trackID=7 RTSP/1.0

CSeq: 5

User-Agent: /home/root/rtsp_client (LIVE555 Streaming Media v2014.12.17)

Transport: RTP/AVP;unicast;client_port=51830-51831

Session: 976b50594e7fb9f1

 

S-->C 

Received 271 new bytes of response data.

Received a complete SETUP response:

RTSP/1.0 200 OK

Server: VLC/2.0.10

Date: Wed, 17 Jun 2015 12:19:22 GMT

Transport: RTP/AVP/UDP;unicast;client_port=51830-51831;server_port=36454-36455;ssrc=99368B0B;mode=play

Session: 976b50594e7fb9f1;timeout=60

Content-Length: 0

Cache-Control: no-cache

Cseq: 5

 

C-->S  PLAY方法告知服务器通过SETUP中指定的机制开始发送数据 。在尚未收到SETUP请求的成功应答之前,客户端不可以发出PLAY请求。

Setup "audio/MPEG4-GENERIC" subsession (client ports 51830-51831)

Created output file: "/tmp/clientCh0.h264"

Created output file: "/tmp/clientCh0.h264"

Sending request: PLAY rtsp://192.168.1.3:8554/avstream RTSP/1.0

CSeq: 6

User-Agent: /home/root/rtsp_client (LIVE555 Streaming Media v2014.12.17)

Session: 976b50594e7fb9f1

Range: npt=0.000-

 

S-->C 

Received 354 new bytes of response data.

Received a complete PLAY response:

RTSP/1.0 200 OK

Server: VLC/2.0.10

Date: Wed, 17 Jun 2015 12:19:22 GMT

RTP-Info: url=rtsp://192.168.1.3:8554/avstream/trackID=6;seq=22956;rtptime=3668001435, url=rtsp://192.168.1.3:8554/avstream/trackID=7;seq=2574;rtptime=1956267432

Range: npt=824.178902-  UTC格式指定了播放开始的时间

Session: 976b50594e7fb9f1;timeout=60

Content-Length: 0

Cache-Control: no-cache

Cseq: 6

 

Started playing session

Receiving streamed data (signal with "kill -HUP 600" or "kill -USR1 600" to terminate)...

总结

第一步:查询服务器端可用方法 

 1.C->S:OPTION request     //询问S有哪些方法可用 

 1.S->C:OPTION response    //S回应信息的public头字段中包括提供的所有可用方法

第二步:得到媒体描述信息 

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

 2.S->C:DESCRIBE response    //S回应媒体描述信息,一般是sdp信息 

第三步:建立RTSP会话 

 3.C->S:SETUP request   //通过Transport头字段列出可接受的传输选项,请求S建立会话 

 3.S->C:SETUP response  //S建立会话,通过Transport头字段返回选择的具体转输选项,并返回建立的Session ID; 

第四步:请求开始传送数据 

 4.C->S:PLAY request        //C请求S开始发送数据 

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

第五步: 数据传送播放中 

 5.S->C:发送流媒体数据    // 通过RTP协议传送数据

第六步:关闭会话,退出 

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

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

 

其中第三和第四步是必需的!第一步,只要服务器客户端约定好,有哪些方法可用,则OPTIONS 请求可以不要。第二步,如果我们有其他途径得到媒体初始化描述信息(比如http请求等等),则我们也不需要通过rtsp中的DESCRIBE请求来完成

1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

流媒体传输控制协议详解之RTSP

流媒体传输协议介绍 一、RTSP协议介绍 什么是rtsp? RTSP协议以客户服务器方式工作,,如:暂停/继续、后退、前进等。它是一个多媒体播放控制协议,用来使用户在播放从因特网下载...
  • sunxiaopengsun
  • sunxiaopengsun
  • 2017-03-30 11:09
  • 753

流媒体传输协议详解之---RTSP认证

Rtsp认证主要分为两种: 基本认证(basic authentication)和摘要认证( digest authentication )。 基本认证是http 1.0提出的认证方案,其消息...
  • machh
  • machh
  • 2016-08-04 19:19
  • 2498

流媒体协议介绍(rtp/rtcp/rtsp/rtmp/mms/hls)

RTP           参考文档 RFC3550/RFC3551          Real-time Transport Protocol)是用于Internet上针对多媒体数据流的一...
  • tttyd
  • tttyd
  • 2013-09-25 23:55
  • 76189

网络直播流媒体协议的选择讨论,RTSP,RTMP,HTTP,私有协议?

最近有不少人在EasyDarwin的交流群里面问关于花椒、映客手机直播技术的问题,还有RTSP、RTMP协议选择的问题,这里个人谈一下自己的愚见。 1、不管是RTSP/RTP、RTMP、HTTP,亦...
  • xiejiashu
  • xiejiashu
  • 2016-04-15 20:03
  • 12539

流媒体分发方式比较

http://blog.csdn.net/Jody1989/article/details/46429923 一、分发方式比较 互联网上的两种主要的分发方式:HLS和RTMP, 什么时候...
  • good_night_honey
  • good_night_honey
  • 2015-09-01 12:18
  • 997

基于RTSP协议流媒体服务器的实现

RTSP,实时流协议,是一个C/S多媒体节目协议,它可以控制流媒体数据在IP网络上的发送,同时提供用于音频和视频流的“VCR模式”远程控制功能,如停止、快进、快退和定位。同时RTSP又是一个应用层协议...
  • ufocode
  • ufocode
  • 2015-01-17 15:50
  • 1744

流媒体技术之RTSP

RTSP协议实现,解决了发送play请求以后客户端收不到数据的问题。
  • csluanbin
  • csluanbin
  • 2016-06-19 18:48
  • 1128

三种主流流媒体协议比较

一、介绍在流媒体协议中,常用的流媒体协议主要有 HTTP协议,RTSP协议和RTMP协议。 在国内视频网站多采用HTTP+MP4或者HTTP+FLV协议传输视频,而国外使用RTMP,RTSP等专门的...
  • xiyanlgu
  • xiyanlgu
  • 2017-03-06 12:22
  • 1163

流媒体传输协议综述(RTP-RTCP RTSP RTMP HTTP)

在Internet上,流(Streaming)的定义非常广泛,主要是指通过网络传输多媒体数据的技术总称。 一、流媒体的定义 流媒体包含广义和狭义两种内涵:  . 广义流媒体    指的...
  • wishfly
  • wishfly
  • 2016-07-15 17:07
  • 4772

音视频开发——流媒体数据传输RTSP(二)

视频数据基本是通过网络传输获取的。针对音视频数据量大的特点,有一套专门的网络传输协议RTP/RTSP,它的运行流程是这样的:     流媒体数据的传输使用这两个协议(RTSP,RTP)就能达到目标...
  • a411358606
  • a411358606
  • 2016-08-10 16:17
  • 4186
    个人资料
    • 访问:41775次
    • 积分:928
    • 等级:
    • 排名:千里之外
    • 原创:51篇
    • 转载:4篇
    • 译文:1篇
    • 评论:6条