目录

1、什么是流媒体?

1.1  核心技术原理

1.2 流媒体的分类

1.3 典型应用场景

2、RTSP、RTCP、RTP协议

2.1 RTP(实时传输协议)

2.1.1 核心定位

2.1.2 RTP 数据包

2.1.3 核心特性

2.2 RTCP(实时传输控制协议)

2.2.1 核心定位

2.2.2 与 RTP 的关联

2.2.3 核心报文

2.2.4 核心作用

2.3 RTSP(实时流协议)

2.3.1 核心定位

2.3.2 核心特点

2.3.3 核心指令

2.3.4 核心特性

2.4 三者核心区别总结

3、RTSP、RTCP、RTP协作过程

3.1 具体实例:车载摄像头实时监控场景

3.1.1 场景前提

3.1.2 协作流程(分 5 步)

3.1.3 三者协作的核心总结

3.2 RTSP+RTP/RTCP 协议交互时序图


1、什么是流媒体?

流媒体(Streaming Media)是一种边传输边播放的多媒体数据传输与播放技术,核心特点是无需等待完整文件下载完成,就能实时观看 / 收听音视频内容。

简单来说,传统下载模式是 “先下载,后播放”(比如下载一部电影到本地再打开),而流媒体模式是 “边下载,边播放”(比如看在线直播、刷短视频)。

1.1  核心技术原理

(1)数据分片发送端(服务器)会把完整的音视频文件切割成一个个小数据包(通常是几秒的内容),并按顺序传输。

(2)缓冲机制接收端(播放器)会先缓存一小部分数据包(缓冲区),再开始播放。缓冲的作用是抵消网络波动带来的延迟,避免播放卡顿。

(3)协议支撑流媒体的传输依赖专门的协议,常见的有:

  • 传输层协议:RTP(实时传输协议)+ RTCP(实时传输控制协议),负责数据传输和质量监控。
  • 应用层协议:RTSP(实时流协议,多用于摄像头、监控)、HLS(基于 HTTP 的流媒体协议,多用于如抖音、快手的等手机短视频平台、腾讯视频、爱奇艺等影视 APP的在线播放)、RTMP(实时消息传输协议,低时延,多用于如斗鱼、虎牙等电竞直播)。

1.2 流媒体的分类

根据传输内容和场景,流媒体主要分为两类:

(1)实时流媒体

  • 特点:延迟极低(通常几秒内),数据实时生成、实时传输,不存储在服务器。
  • 典型场景:直播(游戏直播、赛事直播)、视频会议、安防监控、车载摄像头实时回传。

(2)点播流媒体

  • 特点:音视频文件预先存储在服务器,用户按需点播,可暂停、快进、后退。
  • 典型场景:短视频平台、影视点播网站(如腾讯视频、Netflix)。

1.3 典型应用场景

  • 日常娱乐:短视频、网络电影、音乐流媒体(如网易云音乐)。
  • 实时互动:视频会议、在线教育直播、电商直播。
  • 物联网 / 车联网:车载摄像头实时监控、智能家居摄像头远程查看、无人机实时画面回传。
  • 安防领域:监控摄像头的实时视频流传输与查看。

2、RTSP、RTCP、RTP协议

RTSP、RTCP、RTP 是一套协同工作的实时流媒体协议簇,主要用于音视频实时传输场景(如监控直播、视频会议、车载摄像头回传等)。三者分工明确:RTP 负责数据传输、RTCP 负责质量监控、RTSP 负责会话控制,共同保障实时流的稳定、低延迟传输。

2.1 RTP(实时传输协议)

2.1.1 核心定位

RTP ( Real-time Transport Protocol)即实时传输协议,是传输层协议,核心作用是承载并传输实时音视频数据,为数据包添加标识信息,让接收端能正确解析、同步、重排数据。它通常基于 UDP 传输(延迟低、实时性好),也可基于 TCP(可靠性高但延迟增加),本身不提供可靠传输(无重传机制),更适合容忍少量丢包的实时场景。

2.1.2 RTP 数据包

RTP 数据包由 RTP 头部 和 负载(音视频数据) 两部分组成,头部长度固定为 12 字节,结构如下:

字段(比特)长度作用
版本(V)2固定为 2(RTP 版本 2)
填充位(P)1标记数据包是否有填充字节(用于适配底层传输单元)
扩展位(X)1标记是否有扩展头部
CSRC 计数(CC)4贡献源标识符数量(通常用于混音场景)
标记位(M)1关键标记(如视频帧的边界、音频的静音检测点)
负载类型(PT)7标识负载数据的编码格式(如 H.264 对应 96、G.711 音频对应 0)
序列号16每发送一个包递增 1,接收端用于检测丢包、乱序重排
时间戳32反映数据包中第一个字节的采样时间,单位由负载类型决定(如视频常用 90000Hz),用于音视频同步、平滑播放
SSRC32同步源标识符,唯一标识一个数据流(如一个摄像头的视频流),避免同一会话中多个流混淆
CSRC 列表0~15×32可选,记录贡献源(如多人连麦的混音源)

2.1.3 核心特性

  • 无连接:无需建立连接即可传输数据,适配实时场景的低延迟需求。
  • 流标识:通过 SSRC、负载类型区分不同数据流和编码格式。
  • 同步支持:时间戳是实现音视频同步的核心(如视频帧与音频帧时间戳对齐)。

2.2 RTCP(实时传输控制协议)

2.2.1 核心定位

RTCP (Real-time Transport Control Protocol)即实时传输控制协议,是 RTP 的配套协议,同样工作在传输层,核心作用是 监控 RTP 传输质量、反馈控制信息、同步时钟,是保障实时流稳定性的 “监控员”。

2.2.2 与 RTP 的关联

  • RTCP 与 RTP 成对使用,共用同一个会话。
  • 端口分配:RTCP 端口号 = 对应 RTP 端口号 + 1(如 RTP 用 5004,则 RTCP 用 5005)。
  • 传输频率:RTCP 包发送频率远低于 RTP,通常每 5 秒发送一次,避免占用过多带宽。

2.2.3 核心报文

RTCP 报文分为多种类型,核心是 发送者报告(SR) 和 接收者报告(RR):

报文类型发送方核心作用
SR(发送者报告)RTP 数据发送端(如车载 T-BOX)1. 包含发送端的时钟信息(NTP 时间戳),用于接收端时钟校准;2. 统计已发送的 RTP 包数量、字节数;3. 帮助接收端实现音视频同步
RR(接收者报告)RTP 数据接收端(如手机监控 APP)1. 统计接收的 RTP 包丢包率、延迟、抖动;2. 将统计结果反馈给发送端;3. 发送端根据反馈调整编码码率或传输策略
SDES(源描述报文)所有参与者携带数据源的描述信息(如摄像头名称、编码格式)
BYE(结束报文)退出会话的参与者通知其他参与者自己退出会话,释放资源

2.2.4 核心作用

  • 质量监控:接收端通过 RR 报文向发送端反馈网络状况(如丢包率过高)。
  • 动态调参:发送端根据 RTCP 反馈调整参数(如降低码率、切换分辨率)。
  • 时钟同步:通过 SR 报文的 NTP 时间戳,统一会话内所有设备的时钟,避免播放卡顿。

2.3 RTSP(实时流协议)

2.3.1 核心定位

RTSP(Real Time Streaming Protocol)即实时流协议, 是应用层协议,核心作用是 控制流媒体会话的生命周期,相当于实时流的 “遥控器”—— 它只传输控制指令,不传输音视频数据。

2.3.2 核心特点

  • 控制与数据分离:RTSP 负责发送 “播放、暂停、快进” 等指令,音视频数据由 RTP 传输。
  • 基于客户端 - 服务器模型:客户端(如手机 APP)向服务器(如车载 T-BOX)发送指令,服务器响应并执行操作。
  • 默认端口:554(TCP/UDP 均可,常用 TCP 保证指令可靠传输)。

2.3.3 核心指令

RTSP 定义了一系列控制指令,覆盖会话的建立、运行、关闭全流程:

指令功能应用场景
OPTIONS查询服务器支持的 RTSP 指令会话初始化第一步,客户端获取服务器能力
DESCRIBE获取流媒体的 SDP(会话描述协议)信息客户端获取音视频编码格式(如 H.264)、传输协议(如 UDP)
SETUP协商 RTP/RTCP 传输通道客户端与服务器约定 RTP/RTCP 端口号、传输协议,建立数据通道
PLAY启动 RTP 数据传输客户端下发播放指令,服务器开始发送音视频数据
PAUSE暂停 RTP 数据传输客户端暂停播放,服务器停止发送数据(会话不关闭)
TEARDOWN关闭会话,释放资源客户端结束监控,服务器关闭 RTP/RTCP 端口,清理会话
GET_PARAMETER查询会话参数(如当前码率)客户端实时获取流的状态信息
SET_PARAMETER设置会话参数(如调整码率)客户端主动调整流的传输参数

2.3.4 核心特性

  • 会话控制:支持精细的会话控制(暂停后可继续播放,无需重新建立会话)。
  • 适配多种场景:不仅支持实时直播,也支持点播(如回放摄像头历史录像)。
  • 与 RTP/RTCP 强绑定:RTSP 的 SETUP 指令是 RTP/RTCP 建立传输通道的前提。

2.4 三者核心区别总结

维度RTSPRTPRTCP
协议层级应用层传输层传输层
核心功能控制会话(播放 / 暂停 / 关闭)传输音视频数据监控传输质量、反馈控制
传输内容控制指令音视频数据包统计报告、控制反馈
典型端口554动态端口(如 5004)RTP 端口 +1(如 5005)
可靠性基于 TCP,指令可靠传输基于 UDP,不保证可靠基于 UDP,不保证可靠

3、RTSP、RTCP、RTP协作过程

上文提到RTSP、RTCP、RTP 是一套协同工作的实时流媒体协议簇,三者分工明确:

  • RTP 负责实时数据传输(音视频数据包);
  • RTCP 负责传输质量监控与反馈;
  • RTSP 负责流媒体会话的控制(播放、暂停、快进等指令)。

三者结合是安防监控、车载摄像头、视频会议等低延迟实时流场景的核心技术方案。

三者的协作遵循 “RTSP 控管、RTP 传数据、RTCP 保质量” 的原则,整体流程分为 会话建立、数据传输、会话关闭 三个阶段。

3.1 具体实例:车载摄像头实时监控场景

以车联网车载 T-BOX 远程查看车内摄像头画面为例,详细说明三者如何协作:

3.1.1 场景前提

  • 发送端:车载摄像头(编码器)+ 车载 T-BOX(网络模块)。
  • 接收端:手机 APP(远程监控端)。
  • 传输目标:低延迟(<3 秒)传输摄像头实时画面。

3.1.2 协作流程(分 5 步)

1. RTSP 会话初始化:建立控制通道

(1)手机 APP 向车载 T-BOX 发送 OPTIONS 指令:RTSP://[车载T-BOX IP]:554/stream1       OPTIONS,查询 T-BOX 支持的 RTSP 指令。

(2)T-BOX 回复支持的指令列表(OPTIONS, DESCRIBE, SETUP, PLAY, PAUSE, TEARDOWN)。

(3)APP 发送 DESCRIBE 指令:获取摄像头流的 SDP(会话描述协议)信息,内容包括:

  • 视频编码格式:H.264;
  • 音频编码格式:G.711(若有);
  • 传输协议:UDP。

(4)APP 发送 SETUP 指令:协商 RTP/RTCP 传输通道,指定端口:

  • 视频 RTP 端口:5004,RTCP 端口:5005;
  • 音频 RTP 端口:5006,RTCP 端口:5007(若有);
  • T-BOX 确认端口分配,控制通道建立完成。

2. RTSP 启动流传输:下发播放指令

APP 向 T-BOX 发送 PLAY 指令:RTSP://[车载T-BOX IP]:554/stream1 PLAY,T-BOX 收到指令后,命令摄像头开始编码并准备发送数据。

3. RTP 传输实时音视频数据:核心数据通道

(1)车载摄像头将实时画面编码为 H.264 帧,T-BOX 将每一帧切割为 RTP 数据包,并添加头部信息:

  • 序列号:从 0 开始递增(如第 1 包序列号 0,第 2 包 1……);
  • 时间戳:基于摄像头的采样时钟(如 90000Hz 时钟频率,每帧对应一个时间戳);
  • 负载类型 PT:96(自定义值,对应 H.264 编码);
  • SSRC:12345(唯一标识摄像头数据流)。

(2)T-BOX 通过 UDP 协议,将 RTP 数据包发送到手机 APP 指定的 5004 端口。

(3)手机 APP 接收 RTP 包后,根据序列号重排乱序的数据包,根据时间戳对齐音视频(若有音频),再解码为可显示的画面。

4. RTCP 监控传输质量:动态调参

(1)手机 APP 实时统计 RTP 包的丢包率、延迟、抖动,并生成 RTCP 接收者报告(RR),通过 5005 端口发送给 T-BOX。

例如:报告内容为 “丢包率 5%,网络抖动 100ms”。

(2)T-BOX 收到 RTCP 报告后,若丢包率过高,动态调整摄像头的编码码率(如从 2Mbps 降到 1Mbps),降低网络压力。

(3)T-BOX 也会发送 RTCP 发送者报告(SR),包含自身的时钟信息,帮助 APP 校准时间戳,保证播放流畅。

5. RTSP 关闭会话:释放资源

用户在手机 APP 点击 “停止监控”,APP 发送 TEARDOWN 指令,T-BOX 收到后停止发送 RTP 数据,关闭 RTP/RTCP 端口,释放会话资源。

3.1.3 三者协作的核心总结

协议角色定位与其他协议的关系
RTSP控制者指挥 RTP 启动 / 停止传输,不参与数据传输
RTP数据搬运工接收 RTSP 的指令,承载音视频数据;接受 RTCP 的监控
RTCP质量监控员监控 RTP 的传输状态,向发送端反馈,优化传输质量

简单来说:RTSP 负责 “发号施令”,RTP 负责 “送货上门”,RTCP 负责 “验货反馈”,三者缺一不可,共同实现低延迟、高质量的实时流媒体传输。

3.2 RTSP+RTP/RTCP 协议交互时序图

以下时序图以车载摄像头远程监控为典型场景,清晰展示客户端(手机 APP) 与 服务端(车载 T-BOX + 摄像头) 之间的协议交互流程,涵盖会话建立、数据传输、质量监控、会话关闭四个核心阶段。

说明:

核心端口:RTSP 默认 554,RTP 端口 5004,RTCP 端口 5005

时序图如下:

┌───────────────┐                ┌───────────────┐
│   客户端      │                │   服务端      │
│ (手机APP)   │                │(车载T-BOX)  │
└───────┬───────┘                └───────┬───────┘
        │                                 │
        │  1. OPTIONS 请求 【RTSP】        │
        │────────────────────────────────>│
        │                                 │
        │  2. OPTIONS 响应(支持的指令)【RTSP】 │
        │<────────────────────────────────│
        │                                 │
        │  3. DESCRIBE 请求(获取SDP)【RTSP】  │
        │────────────────────────────────>│
        │                                 │
        │  4. DESCRIBE 响应(SDP信息)【RTSP】  │
        │<────────────────────────────────│
        │    (含编码格式、传输协议等)    │
        │                                 │
        │  5. SETUP 请求(协商RTP/RTCP)【RTSP】  │
        │  (指定RTP:5004,RTCP:5005)    │
        │────────────────────────────────>│
        │                                 │
        │  6. SETUP 响应(通道建立成功)【RTSP】  │
        │<────────────────────────────────│
        │                                 │
        │  7. PLAY 指令(启动流传输)【RTSP】     │
        │────────────────────────────────>│
        │                                 │
        │  8. PLAY 响应(开始传输数据)【RTSP】   │
        │<────────────────────────────────│
        │                                 │
        │  9. RTP 音视频数据传输(持续)【RTP】  │
        │<────────────────────────────────│
        │  (带序列号、时间戳、SSRC)     │
        │                                 │
        │  10. RTCP 报告交互(周期性)【RTCP】    │
        │<────────── SR 报告 ────────────│  【RTCP】服务端发送SR(时钟+发送统计)
        │                                 │
        │────────── RR 报告 ────────────>│  【RTCP】客户端发送RR(丢包+延迟统计)
        │                                 │
        │  11. PAUSE 指令(可选,暂停)【RTSP】   │
        │────────────────────────────────>│
        │                                 │
        │  12. PAUSE 响应(停止发RTP)【RTSP】    │
        │<────────────────────────────────│
        │                                 │
        │  13. TEARDOWN 指令(关闭会话)【RTSP】  │
        │────────────────────────────────>│
        │                                 │
        │  14. TEARDOWN 响应(释放资源)【RTSP】  │
        │<────────────────────────────────│
        │                                 │
        │              结束               │
        │                                 │

时序阶段详细说明如下:

阶段 1:RTSP 会话初始化(1-6 步)

  • 核心目标:建立 RTSP 控制通道,协商 RTP/RTCP 传输参数。
  • 关键动作:
    1. OPTIONS:客户端查询服务端支持的 RTSP 指令集。
    2. DESCRIBE:客户端获取 SDP 信息,包含音视频编码格式(如 H.264)、传输协议(UDP/TCP)。
    3. SETUP:客户端指定 RTP/RTCP 端口,服务端确认后,数据传输通道建立。

阶段 2:RTP 数据传输(7-9 步)

  • 核心目标:服务端向客户端推送实时音视频流。
  • 关键动作:
    1. PLAY:客户端下发播放指令,服务端触发摄像头编码。
    2. RTP 持续传输:服务端将编码后的音视频帧封装为 RTP 包,通过 UDP 5004 端口发送,包内携带序列号、时间戳、SSRC,保证客户端能重排、同步数据。

阶段 3:RTCP 质量监控(10 步)

  • 核心目标:监控传输质量,动态优化流参数。
  • 关键动作:
    1. 服务端发 SR:每 5 秒发送一次,包含 NTP 时间戳(校准客户端时钟)、已发送 RTP 包数量 / 字节数。
    2. 客户端发 RR:每 5 秒发送一次,包含丢包率、网络抖动、延迟等统计数据。
    3. 动态调优:服务端收到 RR 后,若丢包率过高,自动降低摄像头编码码率。

阶段 4:会话控制与关闭(11-14 步)

  • 核心目标:暂停 / 恢复 / 终止会话,释放资源。
  • 关键动作:
    1. PAUSE(可选):客户端暂停播放,服务端停止发送 RTP 包,会话不释放(可通过 PLAY 恢复)。
    2. TEARDOWN:客户端关闭会话,服务端释放 RTP/RTCP 端口、停止摄像头编码,彻底结束交互。
Logo

火山引擎视频云技术社区,是面向 AI 音视频开发者的技术交流平台。这里汇聚源自抖音、豆包等亿级 DAU 产品的 RTC、直播、点播、AI 媒体处理、音视频互动技术,提供接入指南、最佳实践、性能调优、场景案例、Demo 代码、开源项目、白皮书和 API 文档。社区汇聚官方工程师与一线开发者,为 AI 视频通话、数字人、AI 视频处理等应用的开发与落地提供技术支持。

更多推荐