Android IOS WebRTC 音视频开发总结(八十)-- NUBOMEDIA: 首个WebRTC PaaS

时间:2022-06-10 11:48:13

本文主要介绍NUBOMEDIA(我们翻译和整理的,译者:jiangpeng,校验:blacker),最早发表在【编风网】

支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:blackerteam 或 webrtcorgcn)。

当我在2011年第一次听说WebRTC时,我被它用标准化的API和协议迷住了。不过,很快我注意到peer-to-peer服务功能太有限。作为开发者,我希望有更多的功能,而这些功能只能通过WebRTC的infrastructure来提供,这就是我参加Kurento项目的原因。Kurento很给力,但是随着它渐渐成熟,我们发现有越来越多的需求与可扩展性相关。这是一个明确的信号:Kurento的“云化”很有必要。

出于这一点,2014年,借由欧盟委员会的财政支持,我们开始着手这一工作,几年来与欧洲最出色的云专家们合作,努力工作。这些努力没有白费:NUBOMEDIA,第一个开源的WebRTC PaaS,现在已经实现。

NUBOMEDIA: 首个WebRTC PaaS

在WebRTC技术的生态系统中,为开发者提供可扩展的云并不是新兴事物。像Tokbox ,Kandy, Twilio和其他许多供应商都有提供。这些解决方案通常被称为“ WebRTCAPI的PaaS ”,“WebRTC云API ”,或“云API ”,因为他们提供了表现出云服务优点“ -ilities ”(比如,可扩展性,安全性,可靠性等)的自定义API,从而提供了一些WebRTC能力。

对于NUBOMEDIA,我们也考虑过采用“云API ”的概念作为解决方案。但是,虽然API是开发者用来创建应用的主要的构建模块,但应用并不仅仅是一组API调用。在调研了WebRTC开发者的需求后,我们觉得“平台”概念相对于“API”概念更具吸引力。平台提供了执行应用所需的所有机制。这通常包括一个操作系统,一些编程语言特定的运行时环境,和一些服务的API。平台的云化版本通常称为PaaS,字面意思就是被作为服务提供出来的一个平台。

市面上有很多PaaS,包括Heroku, Google App Engine或AWS Elastic Beanstalk。它们都为开发者提供了上传、部署、执行、管理用不同编程语言创建的应用等功能。这些PaaS的服务是相当方便的,因为它们让开发者集中精力完成自己应用的逻辑,而存储、扩展和安全性等则由PaaS来保证。尽管这些PaaS服务提供了很多功能,我们注意到大部分PaaS供应商没有把WebRTC能力作为它们的API提供出来。因此,WebRTC开发者并不能享受PaaS的所有优点。

WebRTC的云API和一个完整的WebRTCPaaS之间的主要差异如下图所示。可以看出,WebRTC的云API(左图)并不运行开发者的应用,而只是以提供供应用使用的网络API的方式来提供一些WebRTC能力。另一方面,完整的WebRTCPaaS上承载着应用,负责其运行、扩展性,并对其进行管理。

Android IOS WebRTC 音视频开发总结(八十)-- NUBOMEDIA: 首个WebRTC PaaS

基于以上思路,NUBOMEDIA想法清楚地出现了:不是从Kurento演变到云API,而是应该创建一个完整的PaaS出来,使开发人员可以在享受到PaaS的优秀特性(即应用的部署,执行,扩展等)的同时,以一种可扩展和安全的方式调用Kurento的API。

为什么你可能对NUBOMEDIA感兴趣

NUBOMEDIA现在已经实现,并可以供全球开发者公开使用。像OpenShift、Cloud Foundry或者Apprenda的解决方案一样,NUBOMEDIA是私有PaaS ,它包含可以下载安装并在任何OpenStack云的IaaS之上执行的开源软件栈。

作为开发者,或许你有兴趣在你的下一个应用中尝试一下NUBOMEDIA,因为它同时结合了WebRTC云API的简单易用的开发过程和完整的PaaS的灵活性。在你这么做时,把NUBOMEDIA作为一个Java PaaS考虑,因此,你可以在创建你的WebRTC应用时,利用Java平台的所有功能。与其他Java PaaS的唯一不同在于,NUBOMEDIA将为你提供一个特定的SDK ,通过它,你能够以一个可扩展的方式访问Kurento的完整功能集。

从实用的角度来看, NUBOMEDIA等WebRTC技术的云解决方案的主要区别如下图所示。可以看到,这里面有灵活性和简单性之间的折衷:开发越简单,应用的灵活性越低,使其适应客户定制化需求的能力越弱。

Android IOS WebRTC 音视频开发总结(八十)-- NUBOMEDIA: 首个WebRTC PaaS

例如,最灵活的解决方案(左下角的IaaS),开发出完整的功能全面的WebRTC应用的难度最大。在另一方面, SaaS解决方案(右上角)不需要太多的开发工作,但开发者自定义、适应特殊要求的能力通常非常有限。出于这个原因,WebRTC技术开发人员往往喜欢WebRTC技术的云的API,提供了一定的灵活性,同时,开发也比较简单。

NUBOMEDIA基本上处于同样的位置,但是更加侧重于灵活性。这就使得NUBOMEDIA更适合用于需要满足特殊、甚至罕见的需求的场景。以下都是一些普通WebRTC API实现起来比较困难、而使用NUBOMEDIA可以轻松实现的例子:

1.使用特定的信令协议(例如SIP,XMPP ,自定义等)。

2.具有特殊的通信拓扑。例如,假设你需要一个特殊的视频会议室,可以查看别人,但不会被别人看到;或者说,你需要“同声传译”--某些与会者不需要看到他,但需要听到他的声音。

3.定制AAA(认证,授权和计费)。例如,你希望实现一些定义用户是否可以访问特定的媒体功能(如录音,查看特定流等)的规则,从而可以通过一些复杂的逻辑进行控制(如上下文信息,时间日期,已通话时间等) 。

4.超越普通呼叫。我们可以想象很多运用WebRTC技术的、但不限于普通呼叫的例子。例如,以灵活的方式用摄像机连接到用户或其他系统的,实现人对机器或机器对机器的应用场景,而不局限于WebRTC云API提供的典型的房间内视频会议模式的情景。

还有个有趣的特性:因为NUBOMEDIA是私有PaaS,它可以在任何OpenStack的基础设施上执行。这意味着,在NUBOMEDIA运行的运营成本由你控制,你可以决定在哪个IaaS上部署PaaS。这显著降低了运营成本,因为与等效的云API相比,不需要再与云API供应商打交道了。

NUBOMEDIA 开源社区

和Kurento一样,我们基于开源原则创建了NUBOMEDIA项目。目前,它有一个活跃的开源软件社区,包括不同技术的项目小组,如:云端机制,PaaS管理技术,媒体服务器,各种媒体处理模块,和Android、iOS、Web客户端SDK。

如果你想了解更多关于NUBOMEDIA的信息,你可以查看社区文档,在那里你可以找到如何安装和管理平台,以及如何开发和部署应用程序到PaaS的详细信息。你还可以查看社区的YouTube频道,观看说明如何开发和部署NUBOMEDIA应用的视频。如果您想了解NUBOMEDIA社区的最新消息,你可以在Twitter上关注。

译者:jiangpeng,具体详见:【编风网