2023年11月06日
WebRTC与RTSP:理解物联网视频流协议
目前,全球范围内不断增加的智能视频摄像头数量正在收集和传输视频。当然,其中许多摄像头用于安全监控。
事实上,全球视频监控市场预计在未来五年将达到830亿美元。但除了安全监控之外,还有许多其他用途,包括远程办公、在线教育和数字娱乐。
在支持这些用例的各种技术中,Web实时通信(WebRTC)和实时流媒体协议(RTSP)是两种首选。以下是关于WebRTC与RTSP以及它们在各种流媒体需求中的适用性的相关信息。
WebRTC的基础知识
让我们从WebRTC开始,这是一种通信协议,允许在Web浏览器中直接实时流式传输音频和视频。Google开发了WebRTC,但现在它是一个得到广泛支持和有详尽文档的开源项目。
当你通过浏览器进行视频通话时,WebRTC负责将你的视频和音频数据传输给你所呼叫的人,反之亦然。因此,你无需下载像Skype这样的专门通信软件;你可以通过浏览器进行聊天,比如使用Google Meet。
WebRTC的特点
WebRTC有一些使其与众不同的特点。首先,该协议根据你的互联网速度调整通话的质量。因此,如果你的互联网速度较慢,你的视频可能会变得模糊,但通常你不必担心失去连接。该协议还加密数据流,包括传入和传出的数据,这意味着视频流是私密和安全的。最后,它提供了一个数据通道,也可以用于发送文件或文本聊天,因此不仅限于视频。
也许WebRTC最重要的一点是它是点对点(P2P)的,这意味着它不必经过服务器。这使得性能更高,延迟更低,或者说在互联网上尽可能“实时”(直接从A到B)。P2P通信就像给住在两小时外的朋友寄信。你可以通过邮局寄信,但总会有信件在不同地点延误的风险。
相反,如果你直接把信交给你的朋友,你可以确保你的信会在两小时内送达,而不是几周后才送达。因此,P2P通信比基于服务器的通信更直接,通常更快。
WebRTC的工作原理
通过WebRTC进行P2P通信涉及一些技术步骤。第一步是信令。将WebRTC信令视为安排会议的过程。在两个人见面之前,他们需要交换诸如会议时间、地点和议程之类的信息。类似地,在WebRTC中,信令是初始安排阶段,在这个阶段,两个设备交换必要的信息以建立实时通信会话。
接下来是媒体捕获,它允许你的浏览器访问设备的摄像头和麦克风,以收集视频和音频等流媒体数据。
接下来是网络地址转换(NAT)穿越。NAT是路由器用于将局域网内的私有IP地址转换为单个公共IP地址以进行互联网访问的方法。这就像一个房子中所有设备使用同一个邮寄地址。而NAT穿越则是一种允许处于不同NAT后面的设备建立直接点对点连接的技术。这类似于在两个各自拥有独特邮寄系统的房子之间建立直接通信线路,使它们可以绕过标准的邮寄路线直接连接。
一旦通话进行并且浏览器通过NAT穿越建立了连接,下一步就是流式传输数据。在通话过程中,WebRTC保持稳定的连接,然后在会话结束时,该协议允许对等方安全地关闭连接,相当于在对话结束时挂断电话。
何时使用WebRTC
WebRTC最重要的一个优点是它可以跨多个平台和浏览器使用。因此,如果你使用Chrome,但你的朋友使用Edge,你仍然可以进行视频流传输。它也很容易访问。与使用Skype不同,你无需下载单独的应用程序。你可以直接在浏览器中打开链接。
一些可能使用WebRTC的情况包括各种活动的流式传输,如音乐会、体育赛事、互动网络研讨会,以及在浏览器之间共享敏感文件或数据、从智能摄像头流式传输视频到浏览器,或者实时多人游戏等。
理解RTSP
实时流媒体协议(RTSP)并不像WebRTC那样是一个视频流协议。相反,它是一种网络控制协议。换句话说,你可以使用它发送视频播放命令,比如播放、暂停等,就像你使用手持遥控器控制流媒体设备一样。
因此,与WebRTC不同,RTSP仅用于建立和控制媒体流,而不是实际传输媒体流。它启动一个流式传输会话,然后允许客户端远程控制流。例如,在智能监控系统中,RTSP允许你实时启动和停止来自安全摄像头的视频流,因此你的命令几乎立即到达你要控制的设备。
RTSP的特点
RTSP本质上不是一种P2P协议,尽管在某些情况下可以在该上下文中使用。通常,RTSP通过托管和流式传输媒体内容的服务器发送命令,因此服务器实际上承担了大部分工作,而RTSP仅发送命令。服务器不一定是云服务器;它可以是一个“逻辑”服务器(如客户-服务器范式中的客户端-服务器),因此RTSP服务器可以在私有网络上的IP摄像头上运行。RTSP仅用于控制播放和流的启动或停止,而不是实际传递媒体。
因此,对于实际的媒体流传输,你需要将RTSP与其他协议配对。最常见的是实时传输协议(RTP)。RTP是用于流式传输和传递音频和视频数据的协议。
除了RTP之外,RTSP通常与传输控制协议(TCP)配对,这允许RTSP在互联网上传输命令。TCP侧重于可靠性,并重新传输任何丢失或损坏的数据包,因此在可靠性最重要的情况下,它与RTSP一起使用。如果视频流连接需要通过防火墙建立,开发人员还可以执行TCP隧道设置,以建立一个无需防火墙麻烦的基于P2P的隧道。
RTSP与TCP的工作原理
基本上,与WebRTC相比,RTSP需要一些额外的设置,以便流媒体可以通过防火墙。开发人员可以配置防火墙本身来接收RTSP流,或者使用TCP隧道来解决问题。
TCP隧道是一种允许视频系统绕过防火墙的技术。当进行TCP隧道时,防火墙不会看到TCP流量。相反,TCP隧道服务通过隧道的每一端(客户端和设备/服务器)“转换”UDP数据包为TCP数据包,即在每一端(客户端和设备/服务器)的应用程序之间“转换”这些数据包。
因此,在许多视频场景中,RTSP/TCP是最合理的模式,尽管使用可靠传输会带来性能损失。
何时使用RTSP
许多较旧的监控摄像头设计在其软件堆栈中内置了RTSP服务器,用于原生处理摄像头视频流。如果你要将这样的摄像头集成到你的系统中,通常会使用RTSP + TCP隧道。另一方面,如果你有一个支持WebRTC视频协议的较新的摄像头软件堆栈,你可能会使用它。但这也取决于你的后端和中间件支持情况。RTSP适用于用户希望从远程位置控制视频播放的系统,例如家庭安全或从无人机进行流媌。
使用案例
WebRTC最初是专门用于浏览器之间的通信,因此最初不太适合你想要从智能手机控制视频摄像头或通过应用程序查看视频流的情况。但现在WebRTC也与物联网和Android应用程序以及物联网连接软件兼容。与此同时,RTSP和RTP没有WebRTC的安全功能或低延迟,但当与TCP隧道一起使用时,这些协议的安全性可以得到增强。
由于其所有专门功能的结果,WebRTC主要用于物联网情况下的双向通信,比如远程医疗会议、远程办公和其他视频会议场景,现在也用于基于移动的视频监控控制。相比之下,RTSP/RTP主要用于安全摄像头和从一个源到多个设备的广播。
总结思考
在WebRTC与RTSP之间的选择是一个复杂的课题,许多不同因素可能影响你选择使用的协议。但最终,两者都是物联网生态系统的重要组成部分,特别是在视频流领域。