65.9K
CodeProject 正在变化。 阅读更多。
Home

Intel® WebRTC 协作套件简化了将实时通信添加到您的应用程序

2016 年 5 月 6 日

CPOL

13分钟阅读

viewsIcon

16413

为了简化这项 WebRTC 技术的采用并使其广泛可用,以扩展或创建新的应用程序,英特尔开发了端到端的 WebRTC 解决方案——Intel® Collaboration Suite for WebRTC (Intel® CS for WebRTC)。

Intel® Developer Zone 提供跨平台应用程序开发工具和操作指南、平台和技术信息、代码示例以及同行专业知识,以帮助开发人员进行创新并取得成功。加入我们的社区,了解 Android物联网Intel® RealSense™ 技术Windows,下载工具,访问开发套件,与志同道合的开发人员交流想法,并参与黑客马拉松、竞赛、路演和本地活动。

概述

基于 Web 的实时通信 (WebRTC) 是万维网联盟 (W3C) 和互联网工程任务组 (IETF) 提出的开放标准,它允许浏览器到浏览器的应用程序支持语音通话、视频聊天和点对点 (P2P) 数据 传输。最终用户可以使用其浏览器进行实时通信,而无需任何额外的客户端或插件。

WebRTC 标准正获得显著的动力,目前已获得 Google Chrome*、Mozilla Firefox* 和 Opera* 等开放标准浏览器的全面支持。微软还宣布其 Edge* 浏览器支持对象 RTC (ORTC),这将与 WebRTC 互操作。

为了简化这项 WebRTC 技术的采用并使其广泛可用,以扩展或创建新的应用程序,英特尔开发了端到端的 WebRTC 解决方案——Intel® Collaboration Suite for WebRTC (Intel® CS for WebRTC)。Intel CS for WebRTC 针对英特尔平台进行了高度优化,包括基于英特尔®至强®处理器的产品,如 Intel® Visual Compute Accelerator 卡、基于英特尔®酷睿™处理器的桌面产品以及基于英特尔®凌动™处理器的移动产品。

您可以从 http://webrtc.intel.com 免费下载 Intel CS for WebRTC。它包含以下主要组件:

  • Intel CS for WebRTC 会议服务器 – 不仅支持 P2P 式通信,还支持高效的基于 WebRTC 的视频会议。
  • Intel CS for WebRTC SIP 网关服务器 – 提供 WebRTC 与会话发起协议 (SIP) 会议的连接。
  • Intel CS for WebRTC 客户端 SDK – 允许您使用 JavaScript* API 开发 WebRTC 应用、用于 WebRTC 的 Internet Explorer* 插件、使用 Java* API 的 Android* 原生应用、使用 Objective-C* API 的 iOS* 原生应用,或使用 C++ API 的 Windows* 原生应用。
  • Intel CS for WebRTC 用户文档 – 包含在 WebRTC 网站 http://webrtc.intel.com 上提供的完整在线文档,其中包含示例代码、安装说明和 API 描述。

现有基于 WebRTC 的 RTC 解决方案的问题

基于 WebRTC 的 RTC 解决方案正在改变人们的通信方式,将实时通信带入浏览器。然而,作为一项新技术,基于 WebRTC 的解决方案需要在以下方面进行改进,才能像传统的 RTC 解决方案那样完善。

  • 主要基于 P2P 通信。 WebRTC 标准本身以及 Google WebRTC 开源参考实现仅专注于点对点 (P2P) 通信,这使得大多数基于 WebRTC 的解决方案仅限于双向通信。虽然一些 WebRTC 解决方案支持多方聊天,但这些解决方案使用了网状网络拓扑,效率较低,并且只能支持少量参会者,这对于普通客户端设备来说是不够的。
  • 未充分考虑客户端使用偏好。 尽管浏览器可在多个平台上使用,但并非所有用户都喜欢浏览器。也就是说,许多移动平台终端用户更喜欢原生应用程序,例如 Android 应用或 iOS 应用。此外,一些常用浏览器,例如 Internet Explorer,仍然不原生支持 WebRTC。
  • MCU 服务器缺乏灵活性。 一些基于 WebRTC 的解决方案支持用于多方通信的多点控制单元 (MCU) 服务器。然而,其中大多数 MCU 服务器使用路由器/转发解决方案,该方案只是将发布者的流转发给订阅者。虽然这种方法在客户端能力相当或支持 SVC/Simulcast 时满足了一部分场景,但对客户端来说,要轻松满足要求变得非常高。为了与各种设备配合使用,MCU 服务器必须进行一些媒体特定的处理,例如转码和混合。
  • 客户部署模式选择有限。 大多数现有的基于 WebRTC 的 RTC 解决方案以服务提供商托管的服务模式运行。这种模式提供了云服务的所有好处,但对于希望出于数据敏感性考虑而自行托管服务提供商来说,它并没有什么用处。

Intel® CS for WebRTC 的关键差异化优势

功能齐全的基于 WebRTC 的音视频通信

Intel CS for WebRTC 不仅提供点对点 WebRTC 通信,还支持基于 WebRTC 的多方视频会议,并提供 WebRTC 客户端与 SIP 等传统视频会议的连接。对于视频会议,它同时提供路由器和混合器解决方案,以处理复杂的客户场景。此外,它支持

  • H.264 和 VP8 视频编解码器用于输入和输出流
  • MCU 多流
  • 实时流协议 (RTSP) 流输入
  • 自定义视频布局定义和运行时控制
  • 语音活动检测 (VAD) 控制的视频切换
  • 灵活的媒体录制

易于部署、扩展和集成

Intel CS for WebRTC 会议和网关服务器提供可插拔的集成模块以及开放的 API,可与现有企业系统配合使用。它们可以轻松扩展到集群模式,并通过增加集群节点数量为更多用户提供服务。此外,英特尔解决方案提供了全面的客户端 SDK,包括 JavaScript SDK、Android 原生 SDK、iOS 原生 SDK 和 Windows 原生 SDK,以帮助客户快速扩展其客户端应用程序的视频通信功能。

高性能媒体处理能力

Intel CS for WebRTC MCU 和网关服务器基于 Intel® Media Server Studio 构建,针对英特尔®酷睿™处理器和英特尔®至强® E3 系列处理器(配备英特尔®锐炬™显卡、英特尔®锐炬™ Pro 显卡和英特尔®高清显卡技术)进行了优化。

客户端 SDK(包括 Android 原生 SDK 和 Windows C++ SDK)利用移动和桌面平台的硬件媒体处理能力来改善用户体验。也就是说,Android 原生 SDK 针对英特尔®凌动™平台(所有英特尔®凌动™ x3、x5 和 x7 处理器系列)进行了优化,侧重于视频功耗和性能以及端到端延迟。Windows C++ SDK 还利用基于英特尔®酷睿™处理器的平台(i3、i5、i7)的媒体处理加速来实现一致的高清视频通信。

安全、智能、可靠的 QoS 控制支持

Intel CS for WebRTC 解决方案通过 HTTPS、安全 WebSocket、SRTP/DTLS 等技术确保视频通信数据的安全性。此外,智能服务质量 (QoS) 控制(例如 NACK、FEC 和动态比特率控制)保证了客户端和服务器之间通信的质量,以应对高丢包率和网络带宽变化。图 1 中列出的实验表明,英特尔视频引擎可处理高达 20% 的丢包率和 200ms 的延迟。

图 1. 带有 QoS 控制的丢包保护结果

通过 Intel CS for WebRTC 会议服务器实现功能齐全的视频通信

灵活的通信模式

Intel CS for WebRTC 提供点对点视频通话和基于 MCU 的多方视频会议通信模式。

典型的 WebRTC 使用场景是直接的点对点视频通话。连接到信令服务器后,用户可以邀请其他方进行 P2P 视频通信。所有视频、音频和数据流都在彼此之间直接传输。同时,用于发现和控制的信令消息通过信令服务器传输。如图 2 所示,英特尔提供了一个名为 Peer Server 的参考信令服务器实现,并附带源代码。客户可以基于此 Peer Server 构建自己的信令服务器,或用现有通道替换整个 Peer Server。客户端 SDK 还提供了定制机制,让用户实现自己的信令通道适配器。

图 2. 使用 Peer Server 的 P2P 视频通信

Intel CS for WebRTC 解决方案进一步提供了基于 MCU 的多方视频会议聊天。如图 3 所示,所有流与信令消息一样,都通过 MCU 服务器传输。与网状网络解决方案相比,这减少了客户端设备的流流量和计算开销。

图 3. 通过 MCU 服务器进行多方视频会议聊天

与大多数现有的 WebRTC MCU 不同,后者通常作为路由器转发媒体流给客户端,Intel CS for WebRTC MCU 服务器还负责媒体处理,并允许广泛的设备用于会议。用户可以订阅来自 MCU 服务器的转发流或混合流。基于英特尔锐炬 Pro 显卡或英特尔高清显卡技术,MCU 服务器上的媒体处理可以实现出色的性价比。

英特尔 MCU 在混合流方面提供了更大的灵活性。您可以生成多种分辨率的混合视频流,以适应具有不同媒体处理能力和网络带宽的各种客户端设备。

RTSP 流的外部输入

Intel CS for WebRTC 支持来自 RTSP 流的外部输入,从而可以连接更广泛的设备到会议中。这意味着几乎所有支持 RTSP 的设备,包括 IP 摄像头,都可以加入视频会议。IP 摄像头支持为安全、远程教育、远程医疗等场景打开了使用场景和应用。

混合流布局定义和运行时区域控制

通过 Intel CS for WebRTC 视频布局定义接口(它是 RFC-5707 (MSML) 的扩展版本),您可以根据运行时参与者数量,为会议定义任何矩形视频布局。图 4 显示了一个会议的视频布局。会议包含 5 种不同的布局,分别有 1、2、3、4 或 5-6 名参会者。

图 4. 示例视频布局

图 5 描述了最多 2 名参会者的详细布局区域。ID 号为 1 的区域始终是此布局的主要区域。

图 5. 示例视频布局定义和效果

Intel CS for WebRTC MCU 还支持通过语音活动检测 (VAD) 进行自动语音激活视频切换。图 6 中,最活跃说话的用户会被切换到主要区域,该区域为黄色部分。

图 6. 带有主要区域的示例视频布局

您还可以根据需要,在运行时将任何流分配到任何区域,以实现会议视频布局的灵活设计。

灵活的会议录制

在 Intel CS for WebRTC 中录制时,您可以选择任何视频源和任何音频源。您不仅可以录制会议室提供的不同流(如混合流和转发流)之间的切换,还可以从不同流中单独选择视频和音频轨道。您可以从参会者的混合流中选择音频轨道,从屏幕共享流中选择视频轨道。

扩展 Peer Server 参考实现

尽管英特尔提供的 Peer Server 是一个信令服务器的参考实现(针对单个节点),但您可以通过重构实现将其扩展为一个分布式、大规模的平台。有关扩展方案,请参见图 7。

图 7. Peer Server 集群扩展方案

扩展 MCU 会议服务器

Intel CS for WebRTC MCU 服务器被设计为一个分布式框架,包含独立的组件,如管理器节点、信令节点、访问节点、媒体处理节点等。这些组件易于扩展,并适用于云部署。

图 8 是会议服务器用户指南中部署 MCU 服务器集群的一个示例。

图 8. MCU 会议服务器集群部署示例

与 Intel CS for WebRTC 网关的互操作性

为了让传统的视频会议解决方案在客户端侧采用 WebRTC 的优势,Intel CS for WebRTC 提供了 WebRTC 网关。

关键功能提供

Intel CS for WebRTC 的 SIP 网关不仅提供 WebRTC 和 SIP 之间的基本信令和协议转换,还提供 VP8 和 H.264 之间的实时媒体转码,以解决它们之间视频编解码器的偏好差异。此外,该网关还维护 WebRTC 和 SIP 之间的会话映射,以支持双向视频通话。图 9 简要说明了 SIP 设备如何通过英特尔提供的网关连接到 WebRTC 终端。

图 9. 通过网关将 WebRTC 与 SIP 终端连接

已验证的 SIP 环境

注意:有关当前已验证的环境,请参阅 Intel CS for WebRTC 发行说明。

云部署

Intel CS for WebRTC 网关实例通常是基于会话的。每个会话都是独立的,因此会话可以轻松地扩展到多个实例以进行云部署。您可以将网关实例管理作为您现有会议系统调度策略的组成部分,并实现网关的负载均衡。

全面的 Intel CS for WebRTC 客户端 SDK

Intel CS for WebRTC 还提供了全面的客户端 SDK,帮助您轻松实现服务器提供的所有功能。客户端 SDK 允许客户端应用程序与远程客户端通信或加入会议。基本功能包括音视频通信、数据传输和屏幕共享。P2P 模式还支持自定义信令通道,可以轻松集成到现有的 IT 基础设施中。

客户端 SDK 包括 JavaScript SDK、Android SDK、iOS SDK 和 Windows SDK。当前功能列在表 1 中。

表 1. 客户端 SDK 功能

#部分支持:对于 JavaScript SDK 的 H.264 视频编解码器支持,仅在浏览器 WebRTC 引擎支持时有效。

自定义信令通道

除了默认的 Peer Server,Intel CS for WebRTC 客户端 SDK(用于 P2P 聊天)提供了简单的自定义接口,允许您通过可扩展消息和状态协议 (XMPP) 服务器通道实现并集成您自己的信令通道。图 10 展示了客户端 SDK 中用于 P2P 聊天的分离式信令通道模型,并允许用户自定义。

图 10. 客户端 SDK 中用于 P2P 聊天的自定义信令通道

硬件媒体处理加速

在 Android 平台上,如果底层平台包含相应的 MediaCodec 插件,则启用 VP8/H.264 解码/编码硬件加速。对于 Windows,通过基于 DXVA 的 HMFT 或 Intel Media SDK 启用 H.264 解码/编码和 VP8 解码硬件加速。对于 iOS,通过 Video Toolbox 框架对 H.264 编码/解码进行硬件加速。下表 2 显示了不同平台上 WebRTC 的硬件加速情况。

表 2. 客户端 SDK 的硬件媒体加速状态

#有条件支持:仅在平台级别启用 VP8 硬件编解码器时启用

NAT 穿透

交互式连接建立 (ICE) 有助于设备在各种复杂的网络地址转换 (NAT) 条件下相互连接。客户端 SDK 支持 NAT 会话穿透实用工具 (STUN) 和中继 NAT 穿透 (TURN) 服务器。图 11 和图 12 展示了客户端 SDK 如何通过 STUN 或 TURN 服务器进行 NAT 穿透。

图 11. 使用 STUN 服务器进行 NAT 穿透

图 12. 使用 TURN 服务器进行 NAT 穿透

细粒度的媒体和网络参数控制

客户端 SDK 进一步允许您选择视频或音频源及其分辨率和帧率、首选视频编解码器以及视频/音频流的最大带宽。

实时连接状态检索

客户端 SDK 提供 API 来检索实时网络和音视频质量状况。如果网络质量不佳,您可以降低分辨率或切换到仅音频流,或者在音频质量差时调整音频级别。表 3 列出了客户端 SDK 支持的连接状态信息。

表 3. 客户端 SDK 支持的连接状态信息

结论

Intel® Collaboration Suite for WebRTC 基于 WebRTC 技术,构建了一个端到端的解决方案,使您能够增强应用程序的互联网视频通信功能。英特尔在客户端和服务器端的媒体处理平台(如 Intel® Visual Compute Accelerator)的加速,改善了客户端用户体验,并提高了服务器端的成本效益。

附加信息

有关更多信息,请访问以下网页:

Intel Visual Compute Accelerator
http://www.intel.com/content/www/us/en/servers/media-and-graphics/visual-compute-accelerator.html
http://www.intel.com/visualcloud

Intel Collaboration Suite for WebRTC
http://webrtc.intel.com
https://software.intel.com/en-us/forums/webrtc
https://software.intel.com/zh-cn/forums/webrtc

互联网工程任务组 (IETF) 工作组
http://tools.ietf.org/wg/rtcweb/

W3C WebRTC 工作组
http://www.w3.org/2011/04/webrtc/

WebRTC 开放项目
http://www.webrtc.org

致谢(按字母顺序)

Elmer Amaya, Jianjun Zhu, Jianlin Qiu, Kreig DuBose, Qi Zhang, Shala Arshi, Shantanu Gupta, Yuqiang Xian

关于作者

Lei Zhai 是英特尔软件与解决方案事业部 (SSG)、系统技术与优化部门 (STO)、客户端软件优化部门 (CSO) 的工程经理。他的工程团队专注于 Intel® Collaboration Suite for WebRTC 产品的开发及其在 IA 平台上的优化。

© . All rights reserved.