【rtspserver】协议篇 - RTSP协议
1.RTSP协议概述
RTSP标准手册:
https://datatracker.ietf.org/doc/html/rfc2326
RTSP(Real Time Streaming Protocol,实时流协议)是一种应用层协议,用于控制实时媒体数据的传输。它是流媒体领域的核心控制协议。
1.1 基本特性
- 工作方式:基于文本的客户端-服务器协议
- 默认端口: 554 (TCP/UDP)
- 协议定位: 介于应用层和传输层之间
- 与HTTP关系:语法和操作类似HTTP,但不兼容
2.RTSP协议特点
1.控制协议:仅负责媒体会话控制,不直接传输媒体数据
2.状态协议:维护会话状态
3.多传输支持:可与RTP/RTCP、TCP、UDP等配合使用
4.时间敏感性:支持NTP时间戳
5.扩展性:支持自定义方法和头部
3.RTSP协议工作流程
典型RTSP会话流程:
C->S: OPTIONS (查询服务器可用方法)
S->C: 200 OK (响应支持的方法)
C->S: DESCRIBE (获取媒体描述)
S->C: 200 OK (返回SDP描述)
C->S: SETUP (建立传输会话)
S->C: 200 OK (确认建立)
C->S: PLAY (开始播放)
S->C: 200 OK (确认播放)
...媒体数据传输...
C->S: TEARDOWN (终止会话)
S->C: 200 OK (确认终止)
4.RTSP核心方法
| 方法 | 功能描述 |
|---|---|
| OPTIONS | 查询服务器支持的方法 |
| DESCRIBE | 获取媒体描述信息(SDP格式) |
| ANNOUNCE | 客户端或服务器更新会话描述 |
| SETUP | 建立传输会话,指定传输方式 |
| PLAY | 开始数据传输 |
| PAUSE | 暂停数据传输 |
| RECORD | 启动媒体录制 |
| TEARDOWN | 终止会话,释放资源 |
| GET_PARAMETER | 查询参数值 |
| SET_PARAMETER | 设置参数值 |
5.RTSP重要头部字段
| 头部字段 | 说明 |
|---|---|
| CSeq | 命令序列号,用于匹配请求响应 |
| Session | 会话标识符 |
| Transport | 指定传输参数(RTP/AVP;unicast;client_port=8000-8001) |
| Range | 指定播放时间范围 |
| Authorization | 认证信息 |
| Content-Type | 内容类型(通常为application/sdp) |
| Content-Length | 内容长度 |
6.RTSP传输模式
RTP over UDP
- 媒体数据通过RTP over UDP传输
- 控制命令通过RTSP over TCP传输
- 需要打开额外端口
2.RTP over TCP
- 媒体数据和控制命令共用TCP连接
- 媒体数据以$前缀标识
- 格式: $ + 1字节通道号 + 2字节长度 + 数据
3.Multicast
- 服务器选择组播地址和端口
- 客户端加入组播组接收数据
7.RTSP状态码
| 状态码 | 含义 |
|---|---|
| 200 | OK - 请求成功 |
| 400 | Bad Request - 错误请求 |
| 401 | Unauthorized - 未授权 |
| 404 | Not Found - 未找到 |
| 405 | Method Not Allowed - 方法不允许 |
| 456 | Header Field Not Valid - 头部字段无效 |
| 461 | Unsupported Transport - 不支持的传输 |
| 500 | Internal Server Error - 服务器内部错误 |
| 503 | Service Unavailable - 服务不可用 |
8.SDP协议(会话描述协议)
RTSP使用SDP描述媒体信息,包含:
- 会话名称和目的
- 媒体类型(视频/音频等)
- 传输协议(RTP/UDP等)
- 媒体格式(H.264/MPEG-4等)
- 媒体传输地址和端口
示例SDP片段:
v=0
o=- 123456 1 IN IP4 192.168.1.1
s=Example Stream
t=0 0
m=video 0 RTP/AVP 96
a=rtpmap:96 H264/90000
a=control:track1
9.RTSP认证
常用真正方式:
1.Basic认证:Base64编码的用户名和密码
2.Digest认证:更安全的挑战-响应机制
认证流程:
C->S: DESCRIBE (无认证)
S->C: 401 Unauthorized
WWW-Authenticate: Digest realm="RTSP", nonce="..."
C->S: DESCRIBE
Authorization: Digest username="...", realm="...", nonce="...", uri="...", response="..."
S->C: 200 OK (认证成功)

浙公网安备 33010602011771号