0
点赞
收藏
分享

微信扫一扫

Shifu开课啦 | 讲讲RTSP那些事

Shifu是由边无际Edgenesis自主研发的物联网开源开发和管理平台,开发者通过Shifu可以轻松实现连接、监控和控制任何物联网设备。

RTSP经典且高效,因此世界上大多数的摄像机都在使用。那为什么TikTok却在用RTMP来传输实时视频呢?这是因为RTMP的开发者是Abode,因此这项协议也主要是为推流方(主播)服务。我写这篇文章的目的不是找谁寻寻开心(至少现在如此),只是想跟大家讲讲RTSP。

今天,我们将深入了解RTSP的定义及其作用。首先,大家都应该知道,要想流式传输视频,除了需要RTSP协议外,RTP和RTCP协议也很重要。

RTSP:实时流传输协议

RTSP的作用类似于HTTP,主要用于处理客户机和服务器之间的请求和请求确认。

发送请求格式如下:

<method> <url> <version>
CSeq: <seq>
<content>

例如,你可以这样写:

DESCRIBE rtsp://114.514.19.19:810 RTSP/1.0
CSeq: 2
Accept: application/sdp

回复格式如下:

<version> <code>
CSeq: <seq>
<content>

例如,你会收到:

RTSP/1.0 200 OK
CSeq: 2
Content-Length: 155
Content-Type: application/sdp
....

在上面的例子中,我们向RTSP服务器发送了一个描述请求,要求提供服务器上所有流的说明,而服务器则通过一个SDP文件来进行反馈。该SDP文件描述了我们刚才的请求。反馈信息包括所有流的描述列表,如地址、类型、通信协议、编码等。我们将在本系列文章的后续内容中讨论SDP文件。

关于每种方法的完整版,请参考 官方文件

注意,RTSP本身与传输视频无关,它只是告诉参与方, “我要传输视频”。

视频的传输工作实际上是由RTP和RTCP来完成。

RTP:实时传输协议

RTP负责传输视频数据。RTP默认使用UDP(针对实时数据),将视频数据(视频和音频)打包并传输。

RTP的Header如下所示:

file

哇,好多新术语! 但你只需要知道,它是RTP的一个典型的Header,用来识别正在传输的数据。我们将在本系列关于RTP的后续文章中进行详细介绍。

RTCP:实时传输控制协议

RTCP负责同步。RTP传输视频时,RTCP会发送RTP所传输数据的状态或元数据。我们用它来监控视频质量、控制负载、节流等。

RTCP 协议规范定义了五种类型的 RTCP包,分别是接收方报告(RR)、发送方报告(SR)、源描述(SDES)、成员管理(BYE)和应用程序定义(APP)。这些都是缩写,但意思不言而喻。BYE用于说明传输终止,而APP则可以认为是 “定制的”,因为它告诉我们这个格式和类型没有被注册,只是实验性的。所以从技术上讲,你并不需要它。

我们将在本系列关于RTCP的下一篇文章详细讨论每种类型的RTCP包。

大家肯定会有各种各样的疑问。例如,SDP是什么东西?RR消息是什么样的?我究竟怎样才能建立一个RTSP服务器?我可以用流媒体玩原神吗?关于上述问题,请期待我们的下一篇文章……

本文由边无际发布

举报

相关推荐

0 条评论