如何利用WebRTC创建视频聊天应用程序

常见的视频应用程序都会利用一项技术——WebRTC。 WebRTC是一项新技术,它允许开发人员通过日常使用的浏览器,在网络上交换数据甚至媒体。考虑到此类功能仅作为插件(如嵌入式插件)可用,不可不称其为十年来的巨大技术变革。

即使你没听说过WebRTC,以前也可能用过它。Whatapps、Facebook、甚至Google handout里都有它的身影。WebRTC,又称网络实时通话,能让你在浏览器之间建立直接连接。这项技术都7年了,我才赶上这趟末班车。我设法创建了自己的WebRTC应用程序,以更好地理解该工具。

本文我将介绍一些有关WebRTC的基础知识:

1. WebRTC如何运作?

魔术实际上不是魔术。只是在黑暗之处迅速完成的一系列复杂手法。就像鸭子一样。它们看起来像在水面上优雅地滑行。但当你深入幕后,就会发现都是些稀松平常的方法。

2. 运行WebRTC需要哪些组件?

网络应用程序有其各自不同的组件,大多都是我们看不见的,例如服务器等。但是它们就像汽车引擎,开车时看不到它(除非你驾驶的是Doge Charger R / T),但这并不意味着发动机并不在工作。

3. STUN服务器的用途?

本节我们会详细介绍在整个过程中如何,以及何时需要STUN服务器。

4. TURN服务器的用途?

在本节中,我们会讲一下何时需要TURN服务器的。并非在所有情况下我们都需要它,如果你必须处理较少的直接用例,一个组件就够了。

5. 针对不同用例和优化的会议室容量,我们要用到哪些WebRTC架构?

说到WebRTC,它主要有四种类型的体系结构。当你使用zoom,你是否想过服务器是如何处理有160位成员及以下的会议呢?这不是魔术,实际上它需要传输大量数据,10分钟的会话就会产生数TB的数据。

为业务用例组建正确的架构,你就成功了一半。

6. 如何测试你的WebRTC和免费资源

在组建自己的WebRTC应用程序时,我找到了一些有趣的工具和资源,能和简单的WebRTC应用程序的不同组件相适配。

让我们开始回答这些问题吧!

1. WebRTC如何运作?

当第一次发起视频聊天,首先你需要向自己所在的房间发出信号。这种告诉其他人你已经就位的方式称为信令。就比如如果你是第一个来到派对的人,理论上你仍会打声招呼,但没人会回应罢了。

从技术上讲,信令是ICE 框架(Interactive Connectivity Establishment)的一部分,是相互查找,然后通过交换媒体信息来协调通信的过程。信令使用会话描述协议(SDP)来收集网络信息,例如用于媒体交换的IP地址和端口号。

作为开启和管理会话邀请的标准方法,会话描述协议(SDP) 以基于文本的格式体现浏览器的功能和首选项。

如果你的浏览器要连接到其他浏览器,要在SDP中交换的信息包含以下内容:

会话控制消息,用于打开或关闭通话;

错误消息;

媒体元数据,例如编解码器和编解码器设置,带宽和媒体类型;

密钥数据,用于建立安全连接;

网络数据,例如外界看到的主机IP地址和端口。

如何利用WebRTC创建视频聊天应用程序

2. 要启动、运行WebRTC应用程序,需要哪些东西?

你需要一个用户界面。

你需要一个网络应用程序,该应用程序要能在加载或单击按钮时建立连接,然后显示同一个聊天室中你这一端发送的视频数据。

技术层面上来说,就是你要创建一个RTCPeerConnection,并将其发送到远程端存储在自己的电脑中。建立好网络应用后,你可以把网络应用程序托管在服务器中的某个位置,以便朋友可以公开访问它。

你需要一个服务器来发送信令。

还记得我们提到的信令吗?它用于向指定房间中的所有人提示你进入房间。当你进入时,会议室中现有的每个成员都将通过SDP记录你的细节和远程信息,并将其存储在他们的电脑上,同时也准备从你那里接收媒体数据。

技术层面上来说,WebRTC处理SDP信息的创建和处理,但不处理其发送和接收。因此这样的传输需要服务器。利用websocket服务器执行此传输和初始化是很常见的事情。

你需要一个STUN服务器。

该服务器用于检索远程端的公共IP地址。简单来说,就是我们每个人都有一个公共IP地址,并使用STUN服务器获取此信息。然后这些信息会成为你刚进入房间时需要发送给另一端的SDP信息的一部分。

你可能需要一个TURN服务器

如果你需要与你的远程端联系,但无法直接与其联系的话,TURN服务器可以作为媒介来为你传递消息。有网友在Quora中问到了这个问题,详细信息点此查看。

3. STUN服务器的用途?

即NAT会话穿越应用程序。双方都至少要了解其另一端的IP地址和分配的UDP端口。

无论使用哪种架构,我们都需要信令服务器来进行注册和显示状态。TURN服务器可以帮助我们遍历网络,并确保内部IP地址可以映射到外部公共ip地址。

STUN如何运作?

如何利用WebRTC创建视频聊天应用程序

现在你能看到浏览器使用STUN服务器请求你的公共IP地址,平时我们是看不见的。这让我学到,魔术从来都不是真正的魔术,幕后有千变万化。如果你想学习魔术,就必须了解背后的这些事。

4. 什么是TURN服务器

中继NAT遍历是一种用于中继网络流量的协议。有时由于防火墙和一些网络相关的工具(也就是NAT),在你使用STUN服务器,设法检索远程对等方的公共IP地址时,你需要一个能公开访问网络,做你媒体中继的一个TURN服务器,这个过程有点像一个中间人帮你传递信息。

如何利用WebRTC创建视频聊天应用程序

5. 如何扩展?4种关键架构供你选择

Mesh

在端对端的电话会议中共3个客户端,有2个连接会进行加密建立。各方都能保持联系。

Forwarding(转发)

选择性转发单元在会话中充当智能媒体中继的角色。每个客户端都会连接到SFU一次,以发送媒体。除自己以外的客户端都会再发送一次。这样每个客户端就有n个单向连接(n是已连接客户端的数量)了。尽管此体系结构的连接总数为n的平方,但客户端在连接初始化时仅加密一次,从而减轻了设备本身,尤其是手机的压力。

转发需要其他服务器基础结构,例如SFU等。但其效率很高。只要不激活记录或对数据进行解码,SFU不会尝试解密数据包。

Mixing(混合)

混合操作依赖于多点控制单元(MCU),该单元在会话中充当高功率媒体混合器的角色。如果每个客户端连接一次MCU,无论有多少客户端在连接,其都只需要处理一个从服务器发送和接收媒体信息的双向连接。

像转发一样,加密和上传也仅执行一次。现在下载和解密也是如此。这种方法在客户端上效率最高,但从服务器角度来看效率最低,因为解码、混合、编码和打包的解包操作完全要在服务器上执行,操作量很大,需要大量服务器资源才能实时完成。

对于有大量活跃用户的应用程序(例如网课)或设备特别受资源限制(例如带宽)的情况,大家可以考虑使用此方法。但这种体系结构要花费一些服务器成本。

Hybrid(混合)

顾名思义,混合体系架构是Mesh、Forwarding和/或Mixing的组合。你可以根据需求为参与者创建会话。

若是简单的两人通话,mesh设置非常简单,服务器资源需求小。

若是小组会议、广播和实时活动,Forwardin最合适。

若是较大的小组会议或电话集成,Mixing是最合适的的开放性选择。

如何使用Testrtc测试WebRTC

目前来看,WebRTC应用在进行拓展时总会出现问题,同时消耗大量数据。如果你打算扩展自己的webRTC应用,你需要考虑适当的体系架构,以及数据流量问题。

在有500名参与者的压力测试中,我们将其分成几组。其中,有5名参与者仅运行了6.5分钟。但该服务器实际上不到10分钟内就双向传输了52GB的媒体流量。

6. 资源

点击这里,你可以免费获取在webRTC实现中使用的STUN服务器,

我找到了一个讲述较全的youtube视频来帮你了解WebRTC的工作方式。webrtc相关的这些youtube视频都好多年了。WebRTC都有7年历史了,而我现在才掌握了这项技术。希望这篇文章能让你也了解这个“老”技术!

展开阅读全文

页面更新:2024-02-17

标签:应用程序   体系结构   参与者   魔术   架构   组件   客户端   浏览器   地址   服务器   媒体   数据   技术   科技   网络   信息   视频

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top