当前位置: 首页 > article >正文

RTSP协议全解析

RTSP(Real Time Streaming Protocol)协议全解析

一、协议概述

  • 定位:应用层协议,用于控制流媒体服务器(播放、暂停、录制),媒体传输由 RTP/RTCP 实现。

  • 特点

    • 基于文本(类似 HTTP),支持 TCP/UDP(默认端口 554)。
    • 无状态协议,通过 Session 头维护会话状态。
  • 核心命令

    方法用途
    OPTIONS查询服务器支持的方法
    DESCRIBE获取媒体描述(SDP 格式)
    SETUP建立传输通道(协商 RTP/RTCP 参数)
    PLAY/PAUSE控制媒体播放
    TEARDOWN终止会话

二、核心命令详解(含 TCP/UDP 场景对比)

1. DESCRIBE

用途:获取媒体流的元数据(SDP 格式)。
交互示例

UDP 场景

C→S: DESCRIBE rtsp://example.com/live RTSP/1.0
     CSeq: 1
     Accept: application/sdp

S→C: RTSP/1.0 200 OK
     Content-Type: application/sdp
     Content-Length: 320

     v=0
     o=- 0 0 IN IP4 192.168.1.1
     s=Live Stream
     m=video 5004 RTP/AVP 96       # UDP端口5004传输视频
     a=rtpmap:96 H264/90000
     a=control:trackID=0
     a=rtcp:5005                   # RTCP端口5005

TCP 场景

S→C: RTSP/1.0 200 OK
     Content-Type: application/sdp
     Content-Length: 300

     v=0
     o=- 0 0 IN IP4 192.168.1.1
     s=Live Stream
     m=video 0 RTP/AVP/TCP 96      # TCP复用连接
     a=rtpmap:96 H264/90000
     a=control:trackID=0
     a=interleaved:0-1             # 通道0=RTP,通道1=RTCP

2. SETUP

用途:协商 RTP/RTCP 传输参数。
交互示例

UDP 场景

C→S: SETUP rtsp://example.com/live/trackID=0 RTSP/1.0
     CSeq: 2
     Transport: RTP/AVP/UDP;unicast;client_port=5000-5001

S→C: RTSP/1.0 200 OK
     Session: 12345678
     Transport: RTP/AVP/UDP;unicast;client_port=5000-5001;server_port=6000-6001

TCP 场景

C→S: SETUP rtsp://example.com/live/trackID=0 RTSP/1.0
     CSeq: 2
     Transport: RTP/AVP/TCP;unicast;interleaved=0-1

S→C: RTSP/1.0 200 OK
     Session: 12345678
     Transport: RTP/AVP/TCP;unicast;interleaved=0-1

关键字段对比

参数UDP 场景TCP 场景
传输协议RTP/AVP/UDPRTP/AVP/TCP
端口协商client_port=5000-5001无端口(通过 interleaved 复用)
通道标识interleaved=0-1

3. PLAY/PAUSE/TEARDOWN

交互示例(通用格式):

C→S: PLAY rtsp://example.com/live RTSP/1.0
     CSeq: 3
     Session: 12345678
     Range: npt=0-

S→C: RTSP/1.0 200 OK
     CSeq: 3
     RTP-Info: url=rtsp://example.com/live/trackID=0;seq=12345;rtptime=123456789

三、SDP(Session Description Protocol)详解

SDP 是 RTSP 中描述媒体流参数的元数据协议,核心字段如下:

1. 全局字段
字段格式说明
v=v=0协议版本(固定为0)
o=o=<username> <sess-id> <version> IN IP4 <IP>会话源信息(如 o=- 0 0 IN IP4 192.168.1.1
s=s=<session name>会话名称(如 s=Live Stream
t=t=0 0会话时间(0表示无限制)
2. 媒体行(m=
参数说明
<media>媒体类型(video/audio
<port>UDP 场景为端口号(如 5004),TCP 场景为 0
<proto>传输协议(RTP/AVP 表示 UDP,RTP/AVP/TCP 表示 TCP)
<fmt>负载格式编号(对应 a=rtpmap 中的值)

示例

m=video 0 RTP/AVP/TCP 96      # TCP视频流
m=audio 5004 RTP/AVP 97       # UDP音频流(端口5004)
3. 扩展属性(a=
属性说明
rtpmap定义编解码器(如 a=rtpmap:96 H264/90000
fmtp编解码器参数(如 a=fmtp:96 profile-level-id=42001f
control媒体流控制 URL(用于 SETUP 请求,如 a=control:trackID=0
interleavedTCP 通道号(如 a=interleaved:0-1
rtcpUDP 场景的 RTCP 端口(如 a=rtcp:5005

四、TCP/UDP 场景数据传输对比

1. UDP 场景
  • RTP 包:通过独立 UDP 端口发送。
  [RTP Header][Payload]  // 端口5004
  • RTCP 包:通过相邻奇数端口发送。
  [RTCP Header][Payload] // 端口5005
2. TCP 场景
  • 数据包格式:所有数据通过同一连接传输,带通道标识前缀。
  $<Channel><Length High><Length Low>[Payload]
  • 示例
  $00 00 04 00 [RTP视频数据]  // 通道0
  $01 00 00 0C [RTCP视频报告] // 通道1

五、协议选择建议

特性UDP 场景TCP 场景
实时性高(低延迟,适合直播、会议)中(适合点播、弱网环境)
可靠性可能丢包(需 RTCP 反馈)高(依赖 TCP 重传)
防火墙穿透需开放多个端口仅需一个端口(默认554)
开发复杂度需处理丢包重传逻辑逻辑简化(依赖 TCP 可靠性)

http://www.kler.cn/a/557492.html

相关文章:

  • jQuery AJAX 方法详解
  • Java 异常(Exception)全面解析:类型与原理
  • 【网络安全】常见的web攻击
  • AI Agent实战:打造京东广告主的超级助手 | 京东零售技术实践
  • python与pycharm如何设置文件夹为源代码根目录
  • DeepSeek掘金——SpringBoot 调用 DeepSeek API 快速实现应用开发
  • 迎接2025,立个flag
  • 图像处理:模拟色差的生成
  • Spring MVC中环境配置的实战应用
  • 自制操作系统学习第七天
  • STM32-心知天气项目
  • Python----数据结构(队列,顺序队列,链式队列,双端队列)
  • 使用PyQt5和百度AI实现图片清晰度增强的GUI应用
  • Linux下安装中文输入法总结
  • pycharm中配置PyQt6详细教程
  • qt项目配置部署
  • java基于数组实现队列(二)
  • 解决双系统开机显示gnu grub version 2.06 Minimal BASH Like Line Editing is Supported
  • 计算机网络————(一)HTTP讲解
  • Maven 构建中的安全性与合规性检查