【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 (认证成功)
posted @ 2025-05-18 22:44  Emma1111  阅读(151)  评论(0)    收藏  举报