LV005-实时流传输协议简介
一、概述
1. 流式传输
传统的网络传输音视频等多媒体信息的方式是完全下载后在播放,下载常常需要花数分钟甚至数小时。那我们平时见到的摄像头拍摄的画面,直接显示在大屏上,是实时显示的,肯定不是这种方式,那是用的什么方式?这就是接下来要了解的 流式传输
看一下百度百科的定义:流式传输是一种通过网络连续传送 流媒体 数据的技术,用户无需下载完整文件即可实时播放音视频内容。该技术通过将媒体文件分解为数据包进行传输,播放器接收后即时解析播放,采用 UDP 或 TCP 协议满足不同场景需求。主要分为 实时流式传输 和 顺序流式传输 两种方式:实时流式传输依赖专用服务器及 RTSP 等协议,支持随机访问并适配网络带宽,适用于直播场景;顺序流式传输基于 HTTP/FTP 服务器,按顺序下载播放且无法跳转,播放前需等待部分内容缓存,但同时也支持在播放前将完整文件下载至本地,适合高质量短片播放。
2. 流媒体
有时候会看到流媒体这样的概念,什么是流媒体?
先来看一下什么是媒体。媒体是个笼统的统称。我们能看到的,感知到的,能用来存放信息和传播信息的都可以叫做媒体。比如报纸、新闻、传媒(广播、电视、报刊杂志)、多媒体(计算机中的文字、声音、图像、视频等文件)都是”媒体“。甚至于磁带、磁盘、光盘和 U 盘、移动硬盘等也全都是”媒体“。
流媒体 指的是通过”网络”传输的”媒体“,它还是媒体,只不过是在网络中“流动”的媒体,比如视频流、音频流、文字流等。比如我们日常用的较多的各种长短视频(奈飞、disney+、youtube、优酷,爱奇艺、某企鹅视频)、直播平台(斗鱼虎牙)和各种音乐平台(网抑云音乐、ku 狗,某企鹅扣扣音乐等)。
到这里,我们也知道了“流媒体”只是“媒体”里的其中一个子类,特指的经过网络传输的媒体。
那流媒体技术呢?流媒体想要在网络中传输当然也少不了“网络传输技术”,除了传输以外,当然少不了要传输的数据,也就是视频流、音频流等数据流。要处理这些数据则涉及到音视频制作、采集、制作、编解码、推流等“音视频处理技术”。”流媒体技术“,它其实就包含“网络传输技术”和“音视频处理技术”,两者缺一不可。
维基是上不去了,看下百度百科简单了解下吧:流媒体技术也称 流式媒体技术.所谓流媒体技术就是把连续的影像和声音信息经过压缩处理 后放 上 网站服务器, 由 视频服务器 向用户计算机顺序或实时地传送各个 压缩包,让用户一边下载一边观看、收听,而不要等整个 压缩文件 下载到自己的计算机上才可以观看的 网络传输技术。
所以呢,采用流媒体技术,可以实现流式传输,将声音、影像或动画由服务器想用户计算机进行连续、不间断传输,用户不必等到整个文件全部下载完毕,而只需要经过几秒或十几秒的启动延时即可进行观看。当声音视频等在用户的机器上播放时,文件的剩余部分还会从服务器上继续下载。
二、流媒体协议
关于流媒体传输协议,涉及到不同领域,不同业务场景,种类众多,下面一张图是现代的流媒体通信协议栈。

我们主要来看一下实时流协议数据传输依赖的这三种协议:RTSP、RTCP 和 RTP。
1. RTSP (Real-Time Streaming Protocol) 实时流式协议
RTSP(Real-Time Stream Protocol)是一种基于文本的应用层协议,是RTP的伴生协议,负责传输控制信息,而非媒体数据。由哥伦比亚大学, 网景和 RealNetworks 公司提交的 IETF RFC 标准。RTSP 以客户-服务器方式工作,它是一个应用层的多媒体播放控制协议。它和 HTTP 协议有些相似,其语法和操作参考了 HTTP/1.1,默认端口 554,而且可以在 TCP 和 UDP 上传输。
RTSP 本身并不传送数据,而仅仅是是媒体播放器能控制多媒体流的传送,暂停播放,快进快退等,必须依赖下层传输协议所提供的某些服务。实际媒体数据的传输可以用 RTP 协议或其他专用协议。
RTSP 主要应用在视频监控领域,网络摄像头都支持 RTSP 协议。
2. RTCP (RTP Control Protocol)实时运输控制协议
实时传输控制协议(R eal-t ime C ontrol P rotocol,RTCP)是 实时传输协议(RTP)的配套控制协议,由 IETF 在 RFC 3550 中定义,基于 UDP 协议 通过相邻端口实现控制流与数据流分离传输。它本身也是不传输数据的,主要功能是为 RTP 提供服务质量反馈。包含媒体链接的统计信息,例如传输字节数,丢失的分组数,单向和双向网络延迟等。
RTCP 的主要功能:服务质量的监督和反馈,媒体数据间的同步,以及多播组中成员的标志。RTCP 分组很短,通常多个分组封装在一个 UDP 数据报中。
3. RTP (Real-Time Transport Protocol) 实时运输协议
RTP 是一种基于 UDP 的传输协议,专为实时数据传输设计,由 IETF 在 RFC 3550 中定义。其核心功能是提供时间戳、序列号和负载类型标识,确保音视频数据的时序同步和丢包检测,主要负责对媒体数据进行封包并实现媒体流的实时传输。RTP 本身不保证服务质量(QoS),但通过 RTCP 实现监控和反馈。
RFC 3550 - RTP: A Transport Protocol for Real-Time Applications
4. 小结
- RTP、RTSP和RTCP是什么关系?
RTSP:建立和控制会话(如播放、暂停)。
RTP:传输实际的音视频数据。
RTCP:监控网络状况,优化RTP传输。
三、实时流传输协议交互
1. RTSP流媒体服务器
下图是一个基于RTSP的流媒体服务器的实现:

客户端通过RTSP协议与媒体服务器建立会话,获取媒体能力集、参数等。当客户端发起play请求后,会建立两个端口的连接,分别供RTP和RTCP使用。客户端通过RTCP周期性反馈媒体链接的统计信息,例如传输字节、丢包、网络延迟信息等。网络应用程序利用RTCP的统计信息控制传输的质量,例如限流或者更新编码参数等。服务端通过RTP协议将媒体数据封装发送,包含音频、视频和一些私有数据。
2. 交互过程中的协议
下图是RTP数据流交互的应用层、传输层和网络层协议关系:

其中RTSP通常是基于TCP协议,RTP和RTCP是基于UDP协议分组发送。需要注意的是,由于RTP数据协议不包含负载数据的长度,所以规定使用UDP传输时,单包数据是一个RTP包。
参考资料:
(5 封私信) 这可能是全网最全的流媒体知识科普文章 - 知乎