作者:Hector Zelaya(原文链接)
翻译:刘通
原标题:How Do I Build a Video Conference App?
前文链接:学习如何做一个视频会议应用(一)
第三步:了解堆栈
现在,你已经明确了应用程序要运行的平台,以及所需要具备的功能,现在该知道如何实际的来做它了。
从技术角度看,WebRTC只不过是API中包含的一组标准和功能,可用于访问媒体设备并建立与其他客户端的端到端连接。这些API与信令进程和一系列其他元素一起使用,用于启动两个或更多用户之间的音视频呼叫。
信令过程并没有被定义为此项技术的一部分,开发人员可以自由使用任何众所周知的信令协议,像SIP和XMPP,或者使用像Websockets这样的全双工通信技术来实现自己的解决方案。
有两种使用WebRTC来开发和运行视频会议应用的方法:内部开发,或者使用CPaaS服务。
内部开发意味着你负责开发应用程序和管理所需的服务器基础架构。
另一方面,使用CPaaS意味着你只使用供应商提供的基础架构来开发应用程序,通常来说需要支付买个月的费用。
这给我们提供了三种开发视频会议应用的策略:
1.内部开发—端到端方法
2.内部开发—媒体服务器方法
3.使用CPaaS供应商提供的服务
下面我们来简要讨论这三种方法。
内部开发—端到端方法
WebRTC本质上就是端到端的。这意味着大多数情况下,WebRTC通话中不会有中间过程。通话是直接从浏览器到浏览器或者设备到设备的。它默认对媒体传输进行加密,使其成为实时通信的一种安全的解决方案。
但是,客户端设备通常会处在NAT配置和/或防火墙的限制之后,这使得在它们之间建立直接连接变得很困难,而且有的时候这会完全阻止连接的建立。为了解决这个问题,使用STUN/TURN服务器来帮助建立端到端连接或者在这种连接不可能实现的情况下中继媒体到另一个用户。
当使用这种方法进行网络会议应用开发时,你负责构建实际的应用程序,而且需要设置信令层,不管是进行内部解决方案的开发还是使用诸如SIP或XMPP之类的东西,以及STUN/TURN服务器。
这种方法的主要优点就是你可以完全掌控应用程序的性能。缺点是你需要提供和维护你自己的基础设施。
需要考虑的一件事情是,由于端到端的特性,某些功能(比如通话录制,更改数据流或者添加多方通话的功能)可能无法轻松的实现,至少会给应用的开发带来一些额外的负担。这可能导致通话在某些情况下失败。而在这些情况中,你需要加入媒体服务器来完成这个困难的任务。
内部开发—媒体服务器方法
媒体服务器位于通话参与者的中间,并发送及接收来自他们的数据流。这种方法为操作媒体流提供了一个中心点,可以让你添加一些高级的功能,比如录制,联播,以及多方通话。
在使用媒体服务器方法内部开发网络会议应用时,除了构建应用程序并添加信令层和STUN/TURN服务器外,还需要添加实际的媒体服务器并进行相应的配置。
一些广受欢迎的开源媒体服务器选择:
# Kurento — http://www.kurento.org/
# Jitsi — https://jitsi.org/jitsi-videobridge/
# Janus —https://janus.conf.meetecho.com/
使用CPaaS供应商提供的服务
这是构建视频会议应用的最简单的方法,因为它使你无需将精力分到配置和维护自己的基础设施,而可以专注于编写应用程序。
但是需要注意的是,当你使用CPaaS时,你几乎无法控制基础设施,并且需要计算每月需要的费用。
结语
高效地开发视频会议应用是非常可能的,希望本文能够为你提供实现它所需的见解。专注于你真正需要的平台和功能,并更具你的需求采用正确的策略。