WebRTC 设置和构建





5.00/5 (1投票)
在本白皮书中,我们将介绍从 Google 构建 WebRTC 源代码以运行其示例 AppRTC/WebRTC 应用程序所需的步骤。
什么是 WebRTC?
WebRTC(Web 实时通信)是 Google* 发起的一个开源项目,旨在通过 JavaScript API 使浏览器具备实时通信 (RTC) 能力。这对于专注于视频聊天的通信 ISV(独立软件供应商)很有帮助。在本白皮书中,我们将介绍从 Google 构建 WebRTC 源代码以运行其示例 AppRTC/WebRTC 应用程序所需的步骤。此外,我们还对 WebRTC 性能与原生 Android* 视频会议进行了基本比较。
WebRTC 的使命
“通过简单的 JavaScript API 和 HTML5,在浏览器中实现丰富、高质量的 RTC 应用程序开发。” [1]
目前,Google Chrome*、Mozilla Firefox* 和 Opera* 都支持 WebRTC,并且能够跨平台通信。WebRTC 还提供了一种通过浏览器或应用程序进行视频会议的手段,无需任何预先安装的插件。
本指南的目的
有关如何设置和开发 WebRTC 源代码的文档可以在以下链接找到:http://www.webrtc.org/reference/getting-started。然而,指南中的步骤通常需要跳转到不同的网站,说明分散在许多不同的页面上。此外,一些对于成功构建至关重要的步骤并未完全文档化,可能会导致后续的构建问题。同样,提供的一些说明是用于个人定制构建工具或附加配置选项,这往往会混淆视听,分散人们对生成成功构建应用程序的重要步骤的注意力。本指南应能显著缩短在尝试在 Android 设备上生成 AppRTC/WebRTC 应用程序时,在研究和调试可能出现的错误上所需的时间。
在通信领域利用 WebRTC 的优势
利用 Intel® GPA 系统分析器工具,收集并比较了一个当前市场上的主流视频会议应用程序与 WebRTC 的 AppRTC 视频会议演示应用程序。结果发现,AppRTC 的平均帧率为 29 fps,而竞争对手应用程序为 18 fps。AppRTC 在 CPU 和 GPU 之间的负载平衡也更好。在用户体验方面,AppRTC 使用起来相对简单。双方只需输入指定聊天室的房间 ID,即可立即发送请求并建立稳定的连接。该应用程序支持跨平台,AppRTC 应用程序版本的用户可以连接到通过启用了 WebRTC 的网页浏览器连接的用户。也无需提前安装或注册。如今,WebRTC 的使用越来越频繁——这很大程度上归功于其性能优势和易用性。
Intel GPA 系统对竞争视频会议应用程序的分析
Intel GPA 系统对 AppRTC (WebRTC) 视频会议演示应用程序的分析
在 Android 设备上将 AppRTC (演示) 设置为独立应用程序
免责声明:作者是在一台 64 位 Linux 机器(Linux 版本为 Ubuntu 14.04)上设置和构建该应用程序的。以下步骤已在具有此配置的情况下进行了测试并证明有效。在不同的 Linux 版本上可能需要进行微小的调整才能成功构建。
1. 首先,要生成 Android 设备的 APK 文件,必须确保在 Linux* 机器上构建 WebRTC。此外,Linux 版本需要是12.04 - 14.04 才能正确构建 AppRTC。推荐使用 64 位。这一步是至关重要的,可以避免将来出现麻烦。
2. 下一项任务是下载/安装开始构建应用程序所需的工具/先决软件。首先打开一个 Linux 终端,然后运行
$ sudo apt-get update $ sudo apt-get install git $ sudo apt-get install ant
3. 接下来,使用终端中的以下命令从 Google Chromium* 获取 depot_tools
$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
[注意:depot_tools 已预先打包了 Python 和 Git。建议使用 Git 版本 1.7.5+]
4. 获取 depot_tools 后,使用以下命令设置路径变量
$ export PATH = "$PATH":’pwd’/depot_tools
此外,将路径添加到 .bashrc 文件(使用 Emacs、Vim 或任何其他文本编辑器)可能会更方便,这样您就不需要每次打开 shell 时都手动设置此路径。术语“pwd”指的是当前工作目录。这取决于 depot_tools 在您的本地计算机上的位置。
5. 下载并安装 JDK 6。推荐使用版本 1.6.0_45u。使用 JDK 6 很重要,因为截至目前,JDK 7 及其他版本似乎无法正常与 WebRTC 配合使用。 JDK 可以在以下链接找到:http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase6-419409.html。
6. 安装 JDK 6 后,还应使用以下命令添加路径变量
$ export PATH = "$PATH":’pwd’/jdk1.6.0_45u/bin
另外,设置 JAVA_HOME 环境变量
$ export JAVA_HOME= ‘pwd’/jdk1.6.0_45u/
此外,将路径/环境变量添加到 .bashrc 文件(使用 Emacs、Vim 或任何其他文本编辑器)可能会更方便,这样您就不需要每次打开 shell 时都手动设置此路径。术语“pwd”指的是当前工作目录。这取决于 JDK 在您的本地计算机上的位置。
7. 下一步是设置 WebRTC 工作目录(例如:mkdir webrtc)。创建新的工作目录,并进入它(例如:cd webrtc)。运行以下命令以拉取 WebRTC 的源代码。
$ gclient config http://webrtc.googlecode.com/svn/trunk
在该目录中,还要按顺序运行以下命令(Android 特定)
$ echo "target_os = [‘android’, ‘unix’]" >> .gclient $ gclient sync --nohooks $ cd trunk $ source .build/android/envsetup.sh $ export GYP_DEFINES="$GYP_DEFINES OS=android"
此外,将路径添加到 .bashrc 文件(使用 Emacs、Vim 或任何其他文本编辑器)可能会更方便,这样您就不需要每次打开 shell 时都手动设置此路径。
8. 现在,在 trunk 目录下,运行以下命令
$ ./build/install-build-deps.sh $ ./build/install-build-deps-android.sh
这将确保所有必需的依赖项都已安装且兼容。
9. 现在,运行以下命令以生成相应的构建文件
$ gclient runhooks --force
此步骤可能需要很长时间,具体取决于您机器的资源。尽管有时似乎“卡”在循环中,但最好还是耐心等待进程完成。
10. 如果以上所有步骤都无错误运行,您现在就可以使用 ninja 构建了。在 trunk 目录中运行以下命令以执行此操作
For Debug: $ ninja -C out/Debug For Release: $ ninja -C out/Release
如果这导致错误(ninja: warning: multiple rules generate icudtl.dat. builds involving this target will not be correct; continuing anyway),这可能是由于最近已修补(但可能尚未整合到源代码中)的 bug。在这种情况下,请找到 icu.gyp 文件并进行修改,具体请参阅以下补丁链接:https://codereview.chromium.org/317373005/。在提供的页面上可以方便地找到差异的并排比较。如果在 WebRTC 目录中搜索“icu.gyp”,您可能会找到该文件的两个实例。但是,只有一个实例与上面补丁链接中的代码匹配;请编辑匹配的那一个。
各自构建的二进制文件将位于 out/Debug 和 out/Release 中。在这些目录中,您应该还能找到以下 apk:WebRTCDemo.apk 和 AppRTCDemo.apk。然后,您可以简单地将这些 APK“adb install”到您的 Android 设备上。
搞定!
附加评论
据 Google WebRTC 支持团队的 Brave Yao 表示
“既有 WebRTCDemo(无信令)也有 AppRTCDemo(带有 peerConnection 信令)。使用 WebRTCDemo,您需要在设置选项卡中输入对端的 IP/端口。使用 AppRTCDemo,您需要提供相同的房间号。最简单的方法是在 PC 客户端连接房间。” [2]
根据您的需求选择最适合的应用程序,或者随时开发您自己的应用程序!
脚注
[1] WebRTC: 首页(访问日期:2014 年 8 月 15 日);可从 http://www.webrtc.org/ 获取。
[2] Yao, Brave. WebRTC Issues: Issue 3506(访问日期:2014 年 8 月 1 日);可从 https://code.google.com/p/webrtc/issues/detail?can=2&q=3506&colspec=ID%20Pri%20Mstone%20ReleaseBlock%20Area%20Status%20Owner%20Summary&id=3506 获取。
有用的资源
通用设置/信息:http://www.webrtc.org/reference/getting-started
概述/入门开发:http://www.html5rocks.com/en/tutorials/webrtc/basics/
关于 Bug 和问题
在此链接报告或查找问题的解决方案:https://code.google.com/p/webrtc/issues/list
用于测试目的
您可以选择使用 Intel® GPA 工具(从远程计算机访问和评估 WebRTC/AppRTC 应用程序并分析信息)。您还可以使用 Intel® SoCWatch 工具收集数据,然后使用 Intel® VTune™ 分析工具分析数据。
Intel® GPA:https://software.intel.com/en-us/vcsource/tools/intel-gpa
Intel® VTune™ Amplifier:https://software.intel.com/en-us/intel-vtune-amplifier-for-systems
此外,许多公司都有网络防火墙,这似乎会禁用下载/安装 WebRTC 代码的许多关键步骤,因此在尝试拉取代码、下载/安装工具时,最好连接到外部网络或代理服务器。
关于作者
William Guo 目前是加州大学伯克利分校的一名高年级学生,正在攻读电气工程与计算机科学学士学位,定于 2015 年 5 月毕业。Will 于 2014 年夏季在加利福尼亚州圣克拉拉的个人形态因素团队小组实习,主要专注于 ISV 赋能。