Search This Blog

7/23/16

WebRTC 設定與建置

WebRTC 設定與建置

William G. 發佈於 2014/8/19 星期二

什麼是 WebRTC?

WebRTC (Web 即時通訊,Web Real Time Communications) 是由 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 System Analyzer 工具,是為了收集 (目前市場上) 較具競爭力的視訊會議應用程式,並比較該應用程式與 WebRTC 的 AppRTC 視訊會議示範應用程式之間的差異。結果發現 AppRTC 的平均幀率為 29 fps,而競爭應用程式則為 18 fps。AppRTC 在 CPU 與 GPU 的負載平衡方面也有較佳的表現。在使用者體驗方面,AppRTC 較容易使用。雙方只需輸入特定聊天室的聊天室 ID,系統就會立即將請求傳送出去並建立穩定的連線。此應用程式可跨平台使用,使用 AppRTC 應用程式版本的使用者,可與已啟用 WebRTC 功能且透過瀏覽器連線的使用者連線。雙方皆無需事先安裝或登入。現在 WebRTC 的使用頻率已經提高,主要是因為它的效能優勢與易用性。
競爭視訊會議應用程式的 Intel GPA System Analysis 分析:
AppRTC (WebRTC) 視訊會議示範應用程式的 Intel GPA System Analysis 分析:

將 AppRTC (示範) 在 Android 裝置上設為獨立應用程式

免責聲明:作者在 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 檔案 (使用 EmacsVim 或任何其他文字編輯器可能會更加方便,如此即無需在每次開啟殼層時手動設定此路徑。「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

7. 安裝 JDK 6 之後,使用以下指令新增路徑變數:

$ export PATH = “$PATH”:’pwd’/jdk1.6.0_45u/bin
同時,設定 JAVA_HOME 環境變數:
$ export JAVA_HOME= ‘pwd’/jdk1.6.0_45u/
另外,將路徑/環境變數加入至 .bashrc 檔案 (使用 EmacsVim 或任何其他文字編輯器可能會更加方便,如此即無需在每次開啟殼層時手動設定此路徑。「pwd」意指目前的工作路徑。這是 JDK位於本機機器中的位置。

8. 下一步是設定 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 檔案 (使用 EmacsVim 或任何其他文字編輯器可能會更加方便,如此即無需在每次開啟殼層時手動設定此路徑。

9. 現在,在主幹 (Trunk) 中執行以下指令:

$ ./build/install-build-deps.sh

$ ./build/install-build-deps-android.sh

如此可確保所有必要的相依性皆已安裝且相容。

10. 現在,執行以下指令以產生適當的建置檔案:

$ gclient runhooks --force
依據機器的資源而定,此步驟可能需要很長的時間。除了有時候會出現「卡在」迴圈中的情況,否則最好等到程序結束。

10. 如果上述程序皆已執行且無錯誤,現在即可使用 ninja 進行建置。執行以下指令以進行建置 (在 trunk 目錄中):

For Debug:    $ ninja -C out/Debug

For Release:  $ ninja -C out/Release
如果導致錯誤 (ninja:警告:系統將不會修正會產生此目標之 icudtl.dat. 建置的多個規則;無論如何仍繼續),這可能是因為最近修補過的錯誤,但可能還不需要整合至原始碼。在此情況下,請找出 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 問題:問題 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/

錯誤與問題

在以下連結回報問題或尋找解決方案: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® SoCWatch:http://wiki.ith.intel.com/display/socwatch/Android+Support
Intel® VTune™ Amplifier:https://software.intel.com/en-us/intel-vtune-amplifier-for-systems
另外,許多企業設有網路防火牆,可能會將下載/安裝 WebRTC 程式碼的許多重要步驟予以停用,因此在嘗試取得程式碼、下載/安裝工具時,建議您連接至外部網路。

關於作者

No comments:

Post a Comment

Related Posts Plugin for WordPress, Blogger...