本文主要介绍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上承载着应用,负责其运行、扩展性,并对其进行管理。

基于以上思路,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技术的云解决方案的主要区别如下图所示。可以看到,这里面有灵活性和简单性之间的折衷:开发越简单,应用的灵活性越低,使其适应客户定制化需求的能力越弱。

例如,最灵活的解决方案(左下角的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,具体详见:【编风网

Android IOS WebRTC 音视频开发总结(八十)-- NUBOMEDIA: 首个WebRTC PaaS的更多相关文章

  1. Android IOS WebRTC 音视频开发总结(十九)-- kurento

    折腾了一个多星期终于将kurento的环境搭建好(开发阶段的产品,有些BUG要自己解决),所以单独写篇文件来介绍. 下面开始介绍kurento,文章来自博客园RTC.Blacker,转载请说明出处. ...

  2. Android IOS WebRTC 音视频开发总结(十五)-- 培训课程大纲

    最近在给公司做内部培训,主要是关于即时通讯和移动视频通话,包括android与android,ios与ios,android与ios,以及手机与PC. ------------------------ ...

  3. Android IOS WebRTC 音视频开发总结(十)-- webrtc入门002

    继续上一篇中未翻译完成的部分,主要包括下面三个部分: 1,扩展:WebRTC多方通话. 2,MCU Multipoint Control Unit. 2, 扩展:VOIP,电话,消息通讯. 注意:翻译 ...

  4. Android IOS WebRTC 音视频开发总结(十二)-- sufaceview

    谈到音视频不得不谈谈对视频呈现的理解,为了让大家能有一个更好的理解,先看看android里面SurfaceView的原理,后续陆续分享其绘画原理. 说明:本文是转载的,转载自哪里我也不知道,貌似经过很 ...

  5. Android IOS WebRTC 音视频开发总结(十八)-- 手机适配

    本文主要介绍上次碰到的某些机器上看不到视频的问题,文章来自博客园RTC.Blacker,转载请说明出处. 之前做的视频聊天App一直运行良好,前几天客户反馈说在三星9100. Android4.0.3 ...

  6. Android IOS WebRTC 音视频开发总结(十六)-- 音频设备操作之opensl与jni

    本节主要分享视频通话中android和ios上操作音频设备的方式,如调解音量大小,启用扬声器(本系列文章转载请说明出处,博客园RTC.Blacker). 先看看webrtc中处理音频设备代码的目录结构 ...

  7. Android IOS WebRTC 音视频开发总结(四一)-- QQ和webrtc打洞能力pk

    很多人知道webrtc打洞能力很强,到底有多强但是不知道,比较好的方法就是跟QQ对比,但大多数公司很难模拟各种网络环境进行测试,比如联通,铁通,电信,移动,所以这次请小师妹在实验室下进行了一个比较全面 ...

  8. Android IOS WebRTC 音视频开发总结(十四)-- sip和xmpp异同

    这篇文章主要介绍XMPP与SIP,很多人容易混淆这两个概念,转载请说明出处(博客园RTC.Blacker). 简介:XMPP和SIP都是应用层协议,主要用于互联网上发送语音和即时通讯. SIP在RFC ...

  9. 转:Android IOS WebRTC 音视频开发总结 (系列文章集合)

    随笔分类 - webrtc   Android IOS WebRTC 音视频开发总结(七八)-- 为什么WebRTC端到端监控很关键? 摘要: 本文主要介绍WebRTC端到端监控(我们翻译和整理的,译 ...

  10. WebRTC 音视频开发

    WebRTC 音视频开发 webrtc   Android IOS WebRTC 音视频开发总结(七八)-- 为什么WebRTC端到端监控很关键? 摘要: 本文主要介绍WebRTC端到端监控(我们翻译 ...

随机推荐

  1. Hello Spring

    初认识Spring 什么是spring:1.Spring是一个轻量级的DI/IoC和AOP容器的开源框架,来源于Rod Johnson 在其著作<Expert one on one J2EE d ...

  2. node.js环境安装,及连接mongodb测试

    1.node.js环境安装 npm config set python python2.7npm config set msvs_version 2013npm config set registry ...

  3. sqlalchemy 实体属性提前加载

    在flask里需要给视图传送数据,肯定需要把模型的实体属性提前加载,可以使用 sqlalchemy.orm.subqueryload 或 sqlalchemy.orm.joinedload 示例: @ ...

  4. PADS在注册表中的菜单栏数据

    位于 [HKCU\Software\Mentor Graphics\PADS9_5\PADS Layout\Workspaces\ENU\Default\BCGToolBar-593980] 下的二进 ...

  5. Base64加密工具-iBlogs

    简易的Base64加密工具开发步骤 1.编写Java测试桩 import java.io.BufferedReader; import java.io.IOException; import java ...

  6. UIWebView的使用

    iOS中UIWebView的使用详解 一.初始化与三种加载方式 UIWebView继承与UIView,因此,其初始化方法和一般的view一样,通过alloc和init进行初始化,其加载数据的方式有三种 ...

  7. 判断Activity是否正在退出 isFinishing()

    boolean android.app.Activity.isFinishing()           Added in API level 1 Check to see whether this ...

  8. smarty模板引擎部分内容(思维导图)

  9. 黄聪:日租VPS中FileZilla_Server配置方法

    1.关闭VPS中IIS的FTP服务 2.FileZilla_Server 监听端口 21 3.FTP客户端端口为11311(看服务商给出的)

  10. HBase配置性能调优(转)

    因官方Book Performance Tuning部分章节没有按配置项进行索引,不能达到快速查阅的效果.所以我以配置项驱动,重新整理了原文,并补充一些自己的理解,如有错误,欢迎指正. 配置优化 zo ...