Shifu物联网知识普及之rtsp篇
Shifu能够轻松接入使用RTSP协议的设备,让物联网开发变得更高效。Shifu是一个Kubernetes原生的物联网开发框架,开发者通过Shifu可以轻松实现连接、监控和控制任何物联网设备。Shifu将Kubernetes带入到物联网边缘计算场景中,助力实现物联网应用程序的可扩展性和高可用性。
RTSP经典且高效,因此世界上大多数的摄像机都在使用。那为什么TikTok却在用RTMP来传输实时视频呢?这是因为RTMP的开发者是Abode,因此这项协议也主要是为推流方(主播)服务。
今天,我们将深入了解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文件。
关于每种方法的完整版,请参考官方文件:https://www.rfc-editor.org/rfc/rfc2326#page-29.
注意,RTSP本身与传输视频无关,它只是告诉参与方, “我要传输视频”。 视频的传输工作实际上是由RTP和RTCP来完成。
RTP:实时传输协议
RTP负责传输视频数据。RTP默认使用UDP(针对实时数据),将视频数据(视频和音频)打包并传输。
RTP的Header如下所示:
哇,好多新术语! 但你只需要知道,它是RTP的一个典型的Header,用来识别正在传输的数据。我们将在本系列关于RTP的后续文章中进行详细介绍。
RTCP:实时传输控制协议
RTCP负责同步。RTP传输视频时,RTCP会发送RTP所传输数据的状态或元数据。我们用它来监控视频质量、控制负载、节流等。
RTCP 协议规范定义了五种类型的 RTCP包,分别是接收方报告(RR)、发送方报告(SR)、源描述(SDES)、成员管理(BYE)和应用程序定义(APP)。这些都是缩写,但意思不言而喻。BYE用于说明传输终止,而APP则可以认为是 “定制的”,因为它告诉我们这个格式和类型没有被注册,只是实验性的。所以从技术上讲,你并不需要它。
我们将在本系列关于RTCP的下一篇文章详细讨论每种类型的RTCP包。
大家肯定会有各种各样的疑问。例如,SDP是什么东西?RR消息是什么样的?我究竟怎样才能建立一个RTSP服务器?我可以用流媒体玩元神吗?关于上述问题,请期待我的下一篇文章……