Skip to content

LV005-实时流传输协议简介

一、概述

1. 流式传输

传统的网络传输音视频等多媒体信息的方式是完全下载后在播放,下载常常需要花数分钟甚至数小时。那我们平时见到的摄像头拍摄的画面,直接显示在大屏上,是实时显示的,肯定不是这种方式,那是用的什么方式?这就是接下来要了解的 流式传输

看一下百度百科的定义:流式传输是一种通过网络连续传送 流媒体 数据的技术,用户无需下载完整文件即可实时播放音视频内容。该技术通过将媒体文件分解为数据包进行传输,播放器接收后即时解析播放,采用 UDPTCP 协议满足不同场景需求。主要分为 实时流式传输顺序流式传输 两种方式:实时流式传输依赖专用服务器及 RTSP 等协议,支持随机访问并适配网络带宽,适用于直播场景;顺序流式传输基于 HTTP/FTP 服务器,按顺序下载播放且无法跳转,播放前需等待部分内容缓存,但同时也支持在播放前将完整文件下载至本地,适合高质量短片播放。

2. 流媒体

有时候会看到流媒体这样的概念,什么是流媒体?

先来看一下什么是媒体。媒体是个笼统的统称。我们能看到的,感知到的,能用来存放信息和传播信息的都可以叫做媒体。比如报纸、新闻、传媒(广播、电视、报刊杂志)、多媒体(计算机中的文字、声音、图像、视频等文件)都是”媒体“。甚至于磁带、磁盘、光盘和 U 盘、移动硬盘等也全都是”媒体“。

流媒体 指的是通过”网络”传输的”媒体“,它还是媒体,只不过是在网络中“流动”的媒体,比如视频流、音频流、文字流等。比如我们日常用的较多的各种长短视频(奈飞、disney+、youtube、优酷,爱奇艺、某企鹅视频)、直播平台(斗鱼虎牙)和各种音乐平台(网抑云音乐、ku 狗,某企鹅扣扣音乐等)。

到这里,我们也知道了“流媒体”只是“媒体”里的其中一个子类,特指的经过网络传输的媒体。

那流媒体技术呢?流媒体想要在网络中传输当然也少不了“网络传输技术”,除了传输以外,当然少不了要传输的数据,也就是视频流、音频流等数据流。要处理这些数据则涉及到音视频制作、采集、制作、编解码、推流等“音视频处理技术”。”流媒体技术“,它其实就包含“网络传输技术”和“音视频处理技术”,两者缺一不可。

维基是上不去了,看下百度百科简单了解下吧:流媒体技术也称 流式媒体技术.所谓流媒体技术就是把连续的影像和声音信息经过压缩处理 后放网站服务器, 由 视频服务器 向用户计算机顺序或实时地传送各个 压缩包,让用户一边下载一边观看、收听,而不要等整个 压缩文件 下载到自己的计算机上才可以观看的 网络传输技术

所以呢,采用流媒体技术,可以实现流式传输,将声音、影像或动画由服务器想用户计算机进行连续、不间断传输,用户不必等到整个文件全部下载完毕,而只需要经过几秒或十几秒的启动延时即可进行观看。当声音视频等在用户的机器上播放时,文件的剩余部分还会从服务器上继续下载。

二、流媒体协议

关于流媒体传输协议,涉及到不同领域,不同业务场景,种类众多,下面一张图是现代的流媒体通信协议栈。

image-20251128151455935

我们主要来看一下实时流协议数据传输依赖的这三种协议: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的流媒体服务器的实现:

image-20251128154309343

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

2. 交互过程中的协议

下图是RTP数据流交互的应用层、传输层和网络层协议关系:

image-20251128161113750

其中RTSP通常是基于TCP协议,RTP和RTCP是基于UDP协议分组发送。需要注意的是,由于RTP数据协议不包含负载数据的长度,所以规定使用UDP传输时,单包数据是一个RTP包。

参考资料:

(5 封私信) 什么是流式传输? - 知乎

(5 封私信) 这可能是全网最全的流媒体知识科普文章 - 知乎

流媒体协议技术等大总结 - 阿风小子 - 博客园

(5 封私信) 流媒体协议 RTP、RTSP、RTMP、HLS、SRT、WebRTC 全面分析 - 知乎

(5 封私信) 深入解析RTSP协议:流媒体传输的控制核心 - 知乎