作者:Hector Zelaya(原文链接)
翻译:刘通
原标题:How Do I Build a Video Conference App?
实时通信正迅速成为许多类型的应用程序必备的功能。从客户服务到远程医疗,视频会议正迅速融入不同行业的工作流程。如果你正在阅读本文,则说明这个现象引起了你的注意,现在你可能会问:如何构建一个视频会议应用呢?
但是如果没有适当的指导的话,构建这样的应用程序可能是一项很复杂的任务。而且有可能你最终做出的这个app会“杀死”你的业务,因为开发这个应用的开销可能比它本身的价值还要高出两倍,或者因为这个应用没有你需要的功能而无法满足要求。
在本文中,我们将给你提供一些指导方针,帮助你利用WebRTC来构建一个成功的视频会议应用软件。
第一步:选择一个平台(也可以不用)
构建视频会议应用首先要考虑的是目标平台,因为这可以确定构建应用程序所需要的工具以及你需要的预算。
所以在开始做程序之前你需要问问自己:我希望这个应用程序在哪运行?智能手机?平板?笔记本电脑?还是台式机?还是所有上述的都要???是的,这是可能的。
如果使用WebRTC的话,你就不需要选择一个特定的平台,因为你可以支持所有的。然而,你应该选择最适合你的需求和你的资源的方法。
可用的选项有:基于网络的,以及本地的。
最初,你可能想要开发一个基于网络的应用程序。WebRTC API已包含在所有主流浏览器中,因此任何安装了其中一种浏览器的设备都可以用于访问你的应用程序。
基于网络的应用程序的另一个好处是,你不需要任何第三方工具来建立它,你可以使用普通的HTML,CSS和JavaScript都没有问题。不过使用ReactJS,Angular或者Vue之类的东西可能会给你更大的协助来构建你的应用程序。
许多流行的视频会议应用都将基于网络的应用程序作为桌面平台设备的默认应用类型,也就是笔记本电脑和台式机。
尽管这样做一般来说是适用于这个平台的,并且应该在移动端上也能够良好运行。但是有时候你可能会想使用针对特定平台的更优化的方法。
在这种情况下,本地应用可能会更合适。另外,如果你想要支持那些不能使用WebRTC API的老旧设备,那么本地应用就是你应该采用的方法。
对于本地应用程序,你应该考虑你所希望支持的移动平台。
根据WebRTC.org上所说的,Android和iOS都可以通过其各自的变成语言来进行开发:Java和Swift / Objective-C。但是这也代表着未来支持这两种操作系统,你可能需要为每个操作系统搭建不同的应用程序。或者你可以使用像React Native这样的框架,它允许构建在Android和iOS设备上都可以运行的本地程序。
最近越来越受欢迎的一项技术是渐进式网络应用程序(Progressive Web App,PWA)概念,因为它结合了两个世界(网络和本地)的优点。这可能是你在制定应用程序战略的时候想要考虑的东西。
许多流行的视频会议应用程序,如Hangouts和appear.in,都提供了一个在桌面版使用的基于网络的应用程序和一个在移动设备上使用的本地应用程序。你应该考虑什么最适合你的需求,并采取一个逐步支持你想要目标平台的策略。
第二步:定义你所需的功能
在为应用程序选择平台之后,你需要定义应用程序所具有的功能。根据你业务的需求,你可能需要制定一下优先级,并将你的工作经历和资金预算都专注于在优先级高的上面。
举个例子,在通话过程中使用滤镜或有趣的图标就是一个很好的尝试,但它可能不适用于技术支持类型或者客户服务类型的应用。对于这两种应用,通话记录功能可能是一个有用的选项,尤其是当你想进行质量分析或者检查是否符合规定的时候。
下面列出了一些流行的视频会议应用程序所具备的功能。
通话前视频预览
像Hangouts这样的受欢迎的应用程序允许用户在加入通话之前检查相机,然后提供选项以禁用用户所希望的功能。我个人发现这个功能非常有用,特别是在早上五点就要起来加入一个商务电话会议的时候,我绝对不想把我刚睡醒的样子展示给别人看。
聊天
文字聊天是大多数视频会议应用中必备的功能,因为它为用户在通话期间提供了额外的沟通渠道。
文件共享
允许通话参与者交换文件是一个很方便的功能。比如,在远程医疗应用中,它将允许患者将测试结果或任何以前的医疗记录发送给医生。但是需要注意的是你必须确保保存和发送这些文件的安全性。
多方会议
允许两个以上的用户加入呼叫是最复杂的功能之一,因为它不仅需要应用程序,而且需要其他基础设施来实现。清楚了解你希望应用程序在通话中能够支持的用户数量,是以后选择合适策略的关键。
屏幕共享
在通话期间共享屏幕内容的能力在远程技术支持等领域是非常有用的,通过给出基于用户所看到的指令,专家可以指导用户实现他们遇到麻烦的特定任务。
录制
许多应用程序会处于不同的目的来记录通话。如果你希望你的应用程序能够录制通话,那么你所需要考虑的事情有:存储类型,录音格式,以及防止未授权用户访问文件的安全措施。
滤镜/图标
很多流行的社交媒体应用都允许用户在通话期间向其媒体流添加有趣的滤镜或者图标。这是非常有趣的,并且可以用来做很多事情,但这也取决于你自己的业务需求来决定是否添加此项功能。
白板
对于跟教育有关的应用程序来说,老师需要向其他用户教授某些东西,这是一个非常有价值的功能。它给老师用户一个工具来通过画图的方式向学生用户来表达想法。
直播流
直播是另一个由社交媒体推广的功能。它允许用户实时地将视频和音频以流传输的形式发送给其他用户。在社交媒体以外,灾难控制应用也可以利用此功能,救援人员可以实时地向政府或救援组织提供有关情况的反馈,以便他们能够及时执行必要的操作。