随着视频监控日益成为智能技术的首要应用,视频流协议也得到了越来越多的关注。最近,我们花了大量时间讨论视频设备之间的实时通信,最终对实时流协议 (RTSP) 及其在物联网 (IoT) 中的地位进行了研究。
什么是实时流协议(Real-Time Streaming Protocol)?
实时流协议是一种网络控制协议,设计用于娱乐和通信系统,以建立和控制媒体流会话。RTSP 可以实时播放、录制和暂停媒体。从根本上说,它就像你在家中电视上使用的遥控器的数字形式。
我们可以将 RTSP 的起源追溯到 1996 年,当时 RealNetworks、Netscape 和哥伦比亚大学合作开发了 RTSP,目的是为控制互联网上的流媒体创建一个标准化协议。这些小组设计的协议与现有的网络协议(如 HTTP)兼容,但特别关注流媒体的控制方面,而 HTTP 在当时并没有充分解决这个问题。
互联网工程任务组(IETF)于 1998 年 4 月正式发布了 RTSP。自 RTSP 诞生以来,物联网开发人员已将其用于各种应用,包括在互联网、IP 监控摄像机和其他任何需要实时传输流媒体内容的系统中传输流媒体。
值得注意的是,RTSP 本身并不实际传输流媒体数据,而是控制连接和流媒体,通常与实时传输协议 (RTP) 等其他协议配合使用,以传输实际媒体数据。
RTSP 采用客户端-服务器架构,其中软件或媒体播放器(称为客户端)向第二方(即服务器)发送请求。在物联网交互中,这种工作方式通常是,客户端软件安装在智能手机或电脑上,向作为服务器的智能摄像机或其他智能设备发送命令。服务器将通过执行特定操作来响应请求,如播放或暂停媒体流或开始录制。您可以实时选择设备的操作。
了解 RTSP 请求
因此,RTSP 连接中的客户端会发送请求。但这究竟是什么意思呢?
基本上,通过 RTSP 进行流媒体传输的设置过程包括计算机或智能手机上的媒体播放器或视频监控平台向摄像机的 URL 发送请求以建立连接。这需要使用 “SETUP”(设置)命令来设置流媒体会话,并使用 “PLAY”(播放)命令来启动流媒体。摄像机随后会作出响应,提供会话详细信息,以便 RTP 协议发送媒体数据,包括它将使用的传输协议的详细信息。
摄像机通过 RTSP 接收到 “PLAY “命令后,就会开始通过 RTP(可能通过 TCP 隧道)实时流式传输视频数据包(稍后详述)。然后,媒体播放器或监控软件接收这些视频数据包并解码成可观看的视频。
以下是 RTSP 中其他请求及其含义的详细列表:
- OPTIONS:查询服务器支持的命令。它用于请求服务器的可用选项或功能。
- DESCRIBE:请求媒体资源的描述,通常采用 SDP(会话描述协议)格式,其中包括有关媒体内容、编解码器和传输信息的详细信息。
- SETUP:初始化会话并建立媒体传输,指定媒体流应如何发送。此命令还通过分配必要的资源来准备服务器进行流式传输。
- PLAY:开始媒体流。它告诉服务器开始通过 SETUP 命令中定义的传输协议发送数据。
- PAUSE:暂时停止流而不中断会话,允许稍后使用另一个 PLAY 命令恢复它。
- TEARDOWN:结束会话并停止媒体流,释放服务器资源。该命令有效地关闭连接。
- GET_PARAMETER:用于查询会话或媒体流上参数的当前状态或值。
- SET_PARAMETER:允许客户端更改或设置会话或媒体流上的参数值。
一旦请求通过,服务器就会做出响应。例如,”200 OK “响应表示请求成功完成,而 “401 未授权 “则表示服务器需要更多验证。而 “404 未找到 “则表示指定的资源不存在。如果这看起来很熟悉,那是因为你在浏览互联网的过程中可能至少见过一次 404 错误和类似 “未找到网页 “的信息。
实时传输协议(RTP)
如前所述,RTSP 并不直接传输视频流。相反,开发人员将该协议与传输协议结合使用。最常见的是实时传输协议(RTP)。RTP 通过网络将音频和视频从服务器传送到客户端,这样您就可以在手机上查看监控摄像头的画面。该协议广泛应用于流媒体系统和视频会议,用于传输音频、视频或模拟数据等实时数据。
RTP 的一些主要特点包括:
- 有效载荷类型标识: RTP 标头包括一个有效载荷类型字段,它允许接收方解释数据格式,如使用的编解码器。
- 顺序编号: 每个 RTP 数据包都有一个序列号。这有助于接收器检测数据丢失并对不按顺序到达的数据包重新排序。
- 时间戳: RTP 数据包携带时间戳信息,使接收方能够重建媒体流的时间,保持音频和视频播放的正确节奏。
RTP 和 RTSP 本身仍不足以处理视频数据流中涉及的所有各种任务。通常情况下,流媒体会话还会涉及实时传输控制协议(RTCP),该协议可提供有关数据分发质量的反馈,包括有关流媒体会话参与者的统计数据和信息。
最后,RTP 本身不提供任何确保及时传输或防止数据丢失的机制;相反,它依赖于底层网络协议(如用户数据报协议 (UDP) 或传输控制协议 (TCP))来处理数据传输。综上所述,RTP 将数据放入数据包中,并通过 UDP 或 TCP 进行传输,而 RTCP 则帮助进行质量控制,RTSP 只负责设置数据流并起到远程控制的作用。
通过 TCP 隧道传输 RTSP
虽然我说过可以使用 UDP 和 TCP 传输媒体流,但我通常推荐通过 TCP 传输 RTSP,特别是使用 TCP 隧道。基本上,TCP 隧道使 RTSP 命令更容易穿过网络防火墙和网络地址转换(NAT)系统。
之所以有必要这样做,是因为 RTSP 的开箱即用版本在身份验证和隐私保护方面存在某些缺陷。从根本上说,它的功能并不是为当今被防火墙四面封锁的互联网而设计的。与其说 RTSP 是为 NAT 系统后本地家庭网络上的设备而设计的,不如说它最初是为从中央服务流式传输数据而设计的。因此,它很难穿过防火墙或找到并访问防火墙后的摄像机,这限制了它的应用范围。
不过,使用 TCP 隧道技术可以让 RTSP 穿过防火墙,轻松穿越 NAT,同时保持强大的身份验证功能。它允许您使用现有协议,只是将其 “打包 “到 TCP 中以增强功能。
该隧道可将 RTSP 通信包裹在 NAT 穿越层内,以穿过防火墙。这一点很重要,因为在不同网络的设备之间建立媒体流可能会很困难:例如,如果你想在度假时监控家中的监控系统。
TCP 隧道的另一个好处是增强了安全性。虽然 RTSP 和 RTP 不具备其他一些协议(如 WebRTC)的开箱即用的安全功能,但您可以对通过 TCP 隧道的所有数据进行完全加密。这些重要因素使得通过 TCP 隧道传输的 RTSP 成为物联网视频流的最佳选择。
最后的思考
总之,虽然 RTSP 提供了一种控制媒体流会话的标准化方法,但其固有的局限性使其对于需要远程访问和强大安全性的现代物联网视频用例来说具有挑战性。
不过,通过利用 TCP 隧道技术,开发人员可以利用 RTSP 的优势,同时克服防火墙穿越和加密障碍。随着视频流继续推动物联网创新,TCP 隧道 RTSP 等解决方案对于实现分布式设备和网络的安全、实时连接至关重要。有了正确的协议和服务,物联网开发人员就可以将实时视频功能无缝集成到他们的产品中。
本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/jishu/47757.html