RTSP协议标准字段详解
1. RTSP协议概述
RTSP(Real Time Streaming Protocol,实时流传输协议)是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学、网景和RealNetworks公司提交的IETF RFC标准RFC2326定义。RTSP协议用于控制具有实时特性的数据(如音视频流)的传输,提供播放、暂停、停止、快进、快退等控制功能。
RTSP协议基于文本,语法和HTTP协议类似,但RTSP是有状态的协议,维护与客户端的会话状态。
RTSP协议设计上遵循了客户端-服务器模型,客户端发送请求,服务器返回响应。与HTTP不同的是,RTSP服务器需要维护会话状态,而HTTP是无状态协议。RTSP通常与RTP(Real-time Transport Protocol)配合使用,RTSP负责控制,RTP负责数据传输。
2. RTSP消息结构
RTSP协议消息分为两类:请求消息(Request)和响应消息(Response)。
2.1 RTSP请求消息格式
Method SP Request-URI SP RTSP-Version CRLF
Header-field:CRLF
...
CRLF
[Message-Body]
其中:
- Method: RTSP方法名,如OPTIONS、DESCRIBE、SETUP等
- SP: 空格字符
- Request-URI: 请求的统一资源标识符
- RTSP-Version: RTSP协议版本,通常为"RTSP/1.0"
- CRLF: 回车换行符(\r\n)
- Header-field: 头字段,格式为"字段名: 字段值"
- Message-Body: 可选的消息体
2.2 RTSP响应消息格式
RTSP-Version SP Status-Code SP Reason-Phrase CRLF
Header-field:CRLF
...
CRLF
[Message-Body]
其中:
- RTSP-Version: RTSP协议版本,通常为"RTSP/1.0"
- Status-Code: 三位数字的状态码
- Reason-Phrase: 状态码的文本描述
3. RTSP消息结构字段详解
3.1 RTSP请求消息结构字段
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Method Name (Variable Length) SP |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Request-URI (Variable Length) SP |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| RTSP-Version (8) CRLF ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ Header Fields (Variable) CRLF ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ CRLF ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message Body (Optional) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
3.2 RTSP请求消息字段详解表
| 字节位置 | 字段名称 | 长度 | 说明 | 取值范围 |
|---|---|---|---|---|
| 0-n | Method | 可变 | 请求方法名称 | OPTIONS, DESCRIBE, SETUP, PLAY, PAUSE, TEARDOWN, GET_PARAMETER, SET_PARAMETER, ANNOUNCE, RECORD, REDIRECT |
| n+1 | SP | 1 | 空格分隔符 | 0x20 |
| n+2-m | Request-URI | 可变 | 请求资源URI | 符合RFC 3986的URI格式 |
| m+1 | SP | 1 | 空格分隔符 | 0x20 |
| m+2-o | RTSP-Version | 8 | RTSP协议版本 | RTSP/1.0 |
| o+1 | CRLF | 2 | 行结束符 | \r\n (0x0D 0x0A) |
| o+3-p | Header Fields | 可变 | 头字段 | 格式为"字段名: 字段值" |
| p+1 | CRLF | 2 | 头部结束符 | \r\n (0x0D 0x0A) |
| p+3-q | Message Body | 可变 | 消息体(可选) | 根据Content-Length确定长度 |
3.3 RTSP响应消息结构字段
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| RTSP-Version (8) SP Status Code (3) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SP Reason Phrase (Variable) CRLF ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ Header Fields (Variable) CRLF ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ CRLF ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message Body (Optional) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
3.4 RTSP响应消息字段详解表
| 字节位置 | 字段名称 | 长度 | 说明 | 取值范围 |
|---|---|---|---|---|
| 0-7 | RTSP-Version | 8 | RTSP协议版本 | RTSP/1.0 |
| 8 | SP | 1 | 空格分隔符 | 0x20 |
| 9-11 | Status Code | 3 | 状态码 | 100-599 |
| 12 | SP | 1 | 空格分隔符 | 0x20 |
| 13-n | Reason Phrase | 可变 | 状态码描述 | 文本描述 |
| n+1 | CRLF | 2 | 行结束符 | \r\n (0x0D 0x0A) |
| n+3-m | Header Fields | 可变 | 头字段 | 格式为"字段名: 字段值" |
| m+1 | CRLF | 2 | 头部结束符 | \r\n (0x0D 0x0A) |
| m+3-p | Message Body | 可变 | 消息体(可选) | 根据Content-Length确定长度 |
4. RTSP标准字段定义
4.1 通用字段分类
RTSP协议中的头字段可以分为以下几类:
| 字段类型 | 缩写 | 说明 |
|---|---|---|
| 通用头字段 | g | 请求和响应中都可以使用的字段 |
| 请求头字段 | R | 只在请求中使用的字段 |
| 响应头字段 | r | 只在响应中使用的字段 |
| 实体头字段 | e | 定义消息体的元信息 |
4.2 RTSP标准头字段详解
以下表格总结了RTSP协议中定义的标准头字段:
| 头字段名称 | 类型 | 支持方法 | 必需性 | 详细说明 |
|---|---|---|---|---|
| Accept | R | entity | 可选 | 指定客户端可以接受的媒体描述信息类型,例如"application/sdp"或"application/rtsl" |
| Accept-Encoding | R | entity | 可选 | 指定客户端可以接受的内容编码方式,如gzip等 |
| Accept-Language | R | all | 可选 | 指定客户端可以接受的自然语言,如"en"、"zh-CN"等 |
| Allow | r | all | 可选 | 列出服务器支持的请求方法,如"OPTIONS, DESCRIBE, SETUP, PLAY, PAUSE, TEARDOWN" |
| Authorization | R | all | 可选 | 客户端的认证信息,用于访问受保护的资源 |
| Bandwidth | R | all | 可选 | 描述客户端可用的带宽值,单位为bits/s |
| Blocksize | R | all but OPTIONS, TEARDOWN | 可选 | 描述客户端希望接收的数据块大小,单位为字节 |
| Cache-Control | g | SETUP | 可选 | 指定请求/响应链上所有缓存机制必须遵守的指令 |
| Conference | R | SETUP | 可选 | 标识会议信息,用于多方会议场景 |
| Connection | g | all | 必需 | 控制不在转发的连接选项,如"close"表示关闭连接 |
| Content-Base | e | entity | 可选 | 解析实体中相对URL的基础URL |
| Content-Encoding | e | SET_PARAMETER, DESCRIBE, ANNOUNCE | 必需/可选 | 实体的编码方式,如gzip、compress等 |
| Content-Language | e | DESCRIBE, ANNOUNCE | 必需 | 实体的自然语言,如"en"、"zh-CN"等 |
| Content-Length | e | SET_PARAMETER, ANNOUNCE, entity | 必需 | 实体主体的大小(字节),用于确定消息体长度 |
| Content-Location | e | entity | 可选 | 实体的替代位置,表示实体数据的实际URL |
| Content-Type | e | SET_PARAMETER, ANNOUNCE, entity | 必需 | 实体的媒体类型,如"application/sdp"、"text/parameters"等 |
| CSeq | g | all | 必需 | 请求序列号,用于匹配请求和响应,每个请求的CSeq值必须唯一且递增 |
| Date | g | all | 可选 | 消息产生的时间,格式为RFC 1123日期时间格式 |
| Expires | e | DESCRIBE, ANNOUNCE | 可选 | 实体过期时间,格式为RFC 1123日期时间格式 |
| From | R | all | 可选 | 请求用户的邮箱地址,用于标识请求发起者 |
| If-Modified-Since | R | DESCRIBE, SETUP | 可选 | 只有在指定时间之后实体被修改才请求,用于缓存控制 |
| Last-Modified | e | entity | 可选 | 实体最后一次修改的时间,格式为RFC 1123日期时间格式 |
| Proxy-Authenticate | 代理服务器的认证质询信息 | |||
| Proxy-Require | R | all | 必需 | 代理必须支持的扩展标签,如果代理不支持则返回551状态码 |
| Public | r | all | 可选 | 服务器支持的请求方法列表 |
| Range | R,r | PLAY, PAUSE, RECORD | 可选 | 指定播放的时间范围,支持多种时间格式如NPT、SMPTE等 |
| Referer | R | all | 可选 | 当前请求URI的引用URI,表示从哪个页面发起的请求 |
| Require | R | all | 必需 | 客户端要求服务器支持的扩展标签,如果服务器不支持则返回551状态码 |
| Retry-After | r | all | 可选 | 服务不可用时,客户端应该在多久之后重试,可以是时间或日期 |
| RTP-Info | r | PLAY | 必需 | RTP流的信息,如序列号和时间戳,用于同步多个流 |
| Scale | R,r | PLAY, RECORD | 可选 | 控制播放速度和方向,正值表示正向播放,负值表示反向播放 |
| Session | R,r | all but SETUP, OPTIONS | 必需 | 标识RTSP会话,由服务器在SETUP响应中生成 |
| Server | r | all | 可选 | 服务器软件信息,如"RTSP Server 1.0" |
| Speed | R,r | PLAY | 可选 | 控制播放速度,1.0表示正常速度 |
| Transport | R,r | SETUP | 必需 | 指定传输层参数,如传输协议、端口号、多播地址等 |
| Unsupported | r | all | 必需 | 服务器不支持的扩展标签,与Require或Proxy-Require对应 |
| User-Agent | R | all | 可选 | 客户端程序信息,如"LibVLC/3.0.0" |
| Via | g | all | 可选 | 显示请求链上的代理和网关,用于追踪请求路径 |
| WWW-Authenticate | r | all | 可选 | 服务器的认证质询信息,用于401响应 |
5. 重要字段详解
5.1 CSeq(Command Sequence)
- 类型: 通用头字段(g)
- 必需性: 所有请求和响应都必须包含
- 作用: 用于匹配请求和响应,每个请求的CSeq值必须唯一且递增
- 详细说明: CSeq是RTSP协议中最重要的字段之一,它确保了请求和响应的正确匹配。客户端发送每个请求时,都需要包含一个唯一的CSeq值,服务器在响应中必须使用相同的CSeq值。这使得客户端能够正确地将响应与对应的请求匹配起来,即使响应的到达顺序与请求的发送顺序不一致。
5.2 Session
- 类型: 请求/响应头字段(R/r)
- 必需性: SETUP和OPTIONS之外的所有方法都必须包含
- 作用: 标识RTSP会话,由服务器在SETUP响应中生成
- 详细说明: Session ID是服务器为每个会话生成的唯一标识符,客户端在后续的所有请求中都必须包含该Session ID。Session ID使得服务器能够区分不同客户端的会话,维护每个会话的状态信息。在SETUP响应中,服务器会返回一个Session ID,客户端需要在之后的PLAY、PAUSE等请求中包含该ID。
5.3 Transport
- 类型: 请求/响应头字段(R/r)
- 必需性: SETUP方法必需
- 作用: 指定传输层参数,包括传输协议、端口号、多播地址等
- 详细说明: Transport字段是SETUP方法中最关键的字段,它定义了媒体数据的传输方式。常见的传输参数包括:
- 传输协议: 如RTP/AVP(RTP over UDP)、RTP/AVP/TCP(RTP over TCP)
- 单播/多播: unicast(单播)或multicast(多播)
- 客户端端口: client_port=端口号-端口号(RTP端口-RTCP端口)
- 服务器端口: server_port=端口号-端口号(RTP端口-RTCP端口)
- 多播地址: destination=多播地址
- SSRC: ssrc=同步源标识符
5.4 Range
- 类型: 请求/响应头字段(R/r)
- 必需性: PLAY、PAUSE、RECORD方法可选
- 作用: 指定播放的时间范围,支持多种时间格式
- 详细说明: Range字段用于指定播放的时间范围,支持多种时间格式:
- NPT (Normal Play Time): npt=开始时间-[结束时间],如"npt=10-15"表示播放第10秒到第15秒
- SMPTE时间格式: smpte=开始时间-[结束时间],如"smpte=0:02:30-"
- 时间单位: 可以使用秒、毫秒等时间单位
- 特殊值: "-"表示从开始或到结束
5.5 RTP-Info
- 类型: 响应头字段(r)
- 必需性: PLAY方法必需
- 作用: 提供RTP流的信息,包括URL、序列号、时间戳等
- 详细说明: RTP-Info字段在PLAY响应中提供RTP流的关键信息,用于客户端同步播放:
- URL: url=流的URL
- 序列号: seq= RTP包的序列号
- 时间戳: rtptime= RTP时间戳
- 多个流: 可以包含多个流的信息,用逗号分隔
5.6 Content-Type
- 类型: 实体头字段(e)
- 必需性: 包含实体主体时必需
- 作用: 指定实体内容的媒体类型,如"application/sdp"
- 详细说明: Content-Type字段指定消息体的媒体类型,常见值包括:
- application/sdp: 会话描述协议,用于DESCRIBE响应
- text/parameters: 文本参数,用于GET_PARAMETER/SET_PARAMETER
- application/rtsl: RTSP文本语言
6. Transport字段结构详解
6.1 Transport字段结构
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Transport Spec (Variable Length) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Parameters (Variable) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
6.2 Transport字段详解表
| 位置 | 参数名称 | 必需性 | 说明 | 示例 |
|---|---|---|---|---|
| 0-n | Transport Spec | 必需 | 传输规范 | RTP/AVP |
| n-m | unicast/multicast | 可选 | 单播或多播 | unicast |
| m-p | destination | 多播必需 | 多播地址 | destination=224.0.1.123 |
| p-q | source | 可选 | 源地址 | source=192.168.1.100 |
| q-r | layers | 可选 | 层数 | layers=1 |
| r-s | append | 可选 | 追加模式 | append |
| s-t | interleaved | TCP可选 | 交织通道 | interleaved=0-1 |
| t-u | TTL | 多播可选 | 生存时间 | TTL=16 |
| u-v | client_port | 单播必需 | 客户端端口 | client_port=8000-8001 |
| v-w | server_port | 可选 | 服务器端口 | server_port=9000-9001 |
| w-x | port | 多播可选 | 端口号 | port=8050 |
| x-y | ssrc | 可选 | 同步源标识符 | ssrc=1234ABCD |
7. RTSP状态码
RTSP协议使用类似HTTP的状态码:
| 状态码 | 含义 | 说明 |
|---|---|---|
| 200 | OK | 请求成功,操作已完成 |
| 250 | Low on Storage Space | 存储空间不足,但仍在记录 |
| 301 | Moved Permanently | 资源永久移动到新位置 |
| 302 | Moved Temporarily | 资源临时移动到新位置 |
| 304 | Not Modified | 资源未修改,可使用缓存版本 |
| 400 | Bad Request | 请求语法错误,服务器无法理解 |
| 401 | Unauthorized | 未授权,需要认证信息 |
| 403 | Forbidden | 禁止访问,服务器拒绝请求 |
| 404 | Not Found | 资源不存在 |
| 405 | Method Not Allowed | 方法不允许,服务器不支持该方法 |
| 406 | Not Acceptable | 不可接受,无法满足Accept字段要求 |
| 408 | Request Timeout | 请求超时 |
| 412 | Precondition Failed | 先决条件失败 |
| 414 | Request-URI Too Long | 请求URI过长 |
| 415 | Unsupported Media Type | 不支持的媒体类型 |
| 451 | Parameter Not Understood | 参数不理解 |
| 452 | Conference Not Found | 会议未找到 |
| 453 | Not Enough Bandwidth | 带宽不足 |
| 454 | Session Not Found | 会话未找到 |
| 455 | Method Not Valid in This State | 方法在当前状态下无效 |
| 456 | Header Field Not Valid for Resource | 头字段对资源无效 |
| 457 | Invalid Range | 无效范围 |
| 458 | Parameter Is Read-Only | 参数只读 |
| 459 | Aggregate Operation Not Allowed | 不允许聚合操作 |
| 460 | Only Aggregate Operation Allowed | 只允许聚合操作 |
| 461 | Unsupported Transport | 不支持的传输 |
| 462 | Destination Unreachable | 目标不可达 |
| 500 | Internal Server Error | 服务器内部错误 |
| 501 | Not Implemented | 未实现,服务器不支持该功能 |
| 502 | Bad Gateway | 网关错误 |
| 503 | Service Unavailable | 服务不可用 |
| 504 | Gateway Timeout | 网关超时 |
| 505 | RTSP Version Not Supported | RTSP版本不支持 |
| 551 | Option not supported | 选项不支持 |
8. RTSP方法
RTSP协议定义了以下标准方法:
| 方法 | 方向 | 请求对象 | 描述 |
|---|---|---|---|
| OPTIONS | C->S | P,S | 查询服务器能力,获取支持的方法列表 |
| DESCRIBE | C->S | P | 获取媒体描述信息,通常返回SDP格式的描述 |
| ANNOUNCE | C->S, S->C | P | 发布会话描述,用于客户端或服务器发布描述信息 |
| SETUP | C->S | S | 为传输建立参数,分配服务器端口和资源 |
| PLAY | C->S | S | 开始发送数据,开始播放媒体流 |
| PAUSE | C->S | S | 暂停数据发送,暂停播放 |
| TEARDOWN | C->S | S | 结束会话,释放资源 |
| GET_PARAMETER | C->S | S | 获取参数值,用于查询服务器状态 |
| SET_PARAMETER | C->S | S | 设置参数值,用于控制服务器参数 |
| REDIRECT | S->C | P | 重定向流,服务器通知客户端连接到新位置 |
| RECORD | C->S | S | 开始录制,开始录制媒体流 |
其中:
- C->S:客户端到服务器
- S->C:服务器到客户端
- P:演示(Presentation)
- S:流(Stream)
9. 实际应用示例
9.1 SETUP请求示例
SETUP rtsp://example.com/media.mp4/streamid=0 RTSP/1.0
CSeq: 1
Transport: RTP/AVP;unicast;client_port=8000-8001
详细解释:
- 客户端请求为媒体流(streamid=0)建立传输连接
- CSeq为1,用于匹配响应
- Transport指定使用RTP/AVP协议,单播方式,客户端端口为8000(RTP)和8001(RTCP)
9.2 SETUP响应示例
RTSP/1.0 200 OK
CSeq: 1
Transport: RTP/AVP;unicast;client_port=8000-8001;server_port=9000-9001;ssrc=1234ABCD
Session: 12345678
详细解释:
- 服务器返回200 OK状态码表示成功
- CSeq为1,与请求匹配
- Transport字段返回服务器分配的端口信息和SSRC
- Session字段返回会话ID,后续请求需要包含此ID
9.3 PLAY请求示例
PLAY rtsp://example.com/media.mp4 RTSP/1.0
CSeq: 2
Session: 12345678
Range: npt=0-
详细解释:
- 客户端请求开始播放媒体
- CSeq为2,递增
- Session为之前SETUP返回的会话ID
- Range指定播放范围,npt=0-表示从头开始播放到结束
9.4 PLAY响应示例
RTSP/1.0 200 OK
CSeq: 2
Session: 12345678
RTP-Info: url=rtsp://example.com/media.mp4/streamid=0;seq=12345;rtptime=789012345
Range: npt=0-300.5
详细解释:
- 服务器返回200 OK状态码表示播放开始
- CSeq为2,与请求匹配
- Session为会话ID
- RTP-Info提供RTP流的初始序列号和时间戳信息
- Range表示实际播放的时间范围
10. RTSP协议工作流程
RTSP协议的典型工作流程包括以下几个步骤:
- OPTIONS: 客户端查询服务器支持的方法
- DESCRIBE: 客户端获取媒体描述信息(SDP)
- SETUP: 客户端为每个媒体流建立传输连接
- PLAY: 客户端开始播放媒体流
- PAUSE: 客户端可选择暂停播放
- TEARDOWN: 客户端结束会话,释放资源
10.1 完整会话示例
C->S: OPTIONS rtsp://example.com/media.mp4 RTSP/1.0
C->S: CSeq: 1
S->C: RTSP/1.0 200 OK
S->C: CSeq: 1
S->C: Public: OPTIONS, DESCRIBE, SETUP, PLAY, PAUSE, TEARDOWN
C->S: DESCRIBE rtsp://example.com/media.mp4 RTSP/1.0
C->S: CSeq: 2
C->S: Accept: application/sdp
S->C: RTSP/1.0 200 OK
S->C: CSeq: 2
S->C: Content-Type: application/sdp
S->C: Content-Length: 444
S->C: v=0
S->C: o=- 1234567890 1234567890 IN IP4 192.168.1.1
S->C: s=RTSP Session
S->C: i=An Example
S->C: t=0 0
S->C: a=control:*
S->C: m=video 0 RTP/AVP 96
S->C: a=control:trackID=1
S->C: a=rtpmap:96 H264/90000
C->S: SETUP rtsp://example.com/media.mp4/trackID=1 RTSP/1.0
C->S: CSeq: 3
C->S: Transport: RTP/AVP;unicast;client_port=8000-8001
S->C: RTSP/1.0 200 OK
S->C: CSeq: 3
S->C: Transport: RTP/AVP;unicast;client_port=8000-8001;server_port=9000-9001
S->C: Session: 12345678
C->S: PLAY rtsp://example.com/media.mp4 RTSP/1.0
C->S: CSeq: 4
C->S: Session: 12345678
C->S: Range: npt=0-
S->C: RTSP/1.0 200 OK
S->C: CSeq: 4
S->C: Session: 12345678
S->C: RTP-Info: url=rtsp://example.com/media.mp4/trackID=1;seq=12345;rtptime=789012345
C->S: TEARDOWN rtsp://example.com/media.mp4 RTSP/1.0
C->S: CSeq: 5
C->S: Session: 12345678
S->C: RTSP/1.0 200 OK
S->C: CSeq: 5
11. RTSP与相关协议的关系
11.1 RTSP与RTP
- RTSP负责控制,RTP负责数据传输
- RTSP SETUP阶段协商RTP传输参数
- RTP-Info头字段提供RTP流的同步信息
11.2 RTSP与SDP
- DESCRIBE方法返回SDP格式的媒体描述
- SDP描述媒体流的编码格式、传输参数等信息
- SETUP方法使用SDP中的trackID标识媒体流
11.3 RTSP与HTTP
- 语法相似,都基于文本
- RTSP是有状态协议,HTTP是无状态协议
- RTSP支持双向通信,HTTP主要是客户端到服务器
12. 总结
RTSP协议作为一个应用层控制协议,提供了丰富的头字段来控制实时流媒体的传输。理解这些标准字段对于开发RTSP客户端和服务器都非常重要。RTSP协议与HTTP协议在语法上相似,但功能上更专注于流媒体的控制,通过与RTP/RTCP协议配合,实现了完整的流媒体传输解决方案。
RTSP协议的关键特性包括:
- 基于文本的协议,易于调试和分析
- 有状态协议,维护会话状态
- 支持多种控制方法,提供完整的播放控制
- 与RTP协议配合,实现高效的媒体传输
- 支持单播和多播传输
- 支持多种时间格式和播放范围控制
6万+

被折叠的 条评论
为什么被折叠?



