作者:星隕
來源:
音視訊開發進階安裝 depot_tools 工具包
首先需要下載下傳
depot_tools
工具包,Git 指令如下:
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
之後要把
depot_tools
目錄添加到系統環境變量中。
export PATH=$PATH:/path/depot_tools
通過如下指令驗證是否安裝成功
fetch --help
顯示如下内容說明
depot_tools
配置好了。

下載下傳 WebRTC 源碼
接下來就要用到
depot_tools
去下載下傳 WebRTC 源碼了。
WebRTC 的源碼位址如下:
https://webrtc.googlesource.com/src/+/refs/heads/master/tools_webrtc/
下載下傳執行如下指令:
mkdir webrtc
cd webrtc
fetch --nohooks webrtc_android
gclient sync
中間的下載下傳過程耗時取決于你的網速了。
執行完如上指令後,就已經在本地拉取 WebRTC 源碼了。
如果你對以上指令感到疑惑,不知道為什麼這麼寫的話,可以參考一下 depot_tools 的使用。
如下文章:
https://www.pianshen.com/article/3086804649/
fetch 指令
其中 fetch 指令是用來擷取源碼的,有如下兩個可選參數:
- –nohooks。這個參數表示擷取代碼完成之後不執行runhooks動作。也就僅僅擷取代碼。
- –no-history。這個參數表示對代碼倉庫執行git shallow clones,就不會獲得原倉庫的全部曆史送出,這樣可以減少拷貝代碼倉庫的大小。
gclient 指令
其中 gclient 指令是用來管理多個子產品源代碼倉庫的工具。它封裝了一些常用的 git 指令,對所有的子產品生效。除了 sync 外,還有如下參數:
- config。建立一個.gclient配置檔案。
- diff。類似git的diff指令,用來比較所有子產品送出代碼的差異。
- fetch。擷取所有子產品上遊的送出。
- help。顯示指令的幫助。
- revert。revert一個送出。
- runhooks。根據DEPS檔案的描述執行hook任務。
- stauts。類似git status指令,用來顯示所有子產品代碼的狀态。
- sync。用來同步所有子產品的代碼。
這裡下載下傳的是 Android 源碼,如果是其他平台源碼隻需要改一下 fetch 指令最後的參數就行:
// 下載下傳 iOS 平台源碼
fetch --nohooks webrtc_ios
安裝依賴
下載下傳完 WebRTC 後需要安裝相關的依賴,進入到 WebRTC 源碼的
src
目錄中,執行如下指令:
cd src
./build/install-build-deps.sh
./build/install-build-deps-android.sh
執行如上兩個指令就可以下載下傳好相關依賴了。
要注意的是,如果用的 MAC 電腦下載下傳不了依賴,這個指令是給 Linux 系統用的。
要下載下傳的話,就得在 Mac 上安裝虛拟機,走虛拟機的方式了,這裡不是很推薦。
WebRTC 源碼編譯
通過如下指令進行編譯:
./build/android/envsetup.h
gn gen out/release/armeabi-v7a --args='target_os="android" target_cpu=“arm" is_debug=false'
ninja -C out/release/armeabi-v7a
編譯成功後會輸出兩個檔案:
out/release/armeabi-v7a/lib.java/sdk/android/libwebrtc.jar
out/release/armeabi-v7a/libjingle_peerconnection_so.so
一個 jar 包和一個 so 動态庫,這就是最終的編譯産物。利用 WebRTC 進行開發就需要導入編譯産物。
Android 環境搭建
除了編譯 WebRTC 源碼得到 so 動态庫和 jar 包之外,WebRTC 還提供了 Maven 倉庫供我們下載下傳,就像引入其他開源庫一樣:
// 目前版本
implementation 'org.webrtc:google-webrtc:1.0.28513'
// 倉庫位址:
https://bintray.com/google/webrtc/google-webrtc/1.0.28513
一行代碼就能把編譯的産物引入進來,省去了那麼多編譯步驟。
這個
1.0.28513
對應的實作可能不是最新的,但是對于學習 WebRTC 代碼來說已經足夠了,畢竟大家都是基于 WebRTC 進行二次開發,而 Android 層的代碼僅僅是對外的 API 接口而已,更多的是要去探究其 Natice 底層代碼。
好在我們已經下載下傳了源碼,完全可以通過 API 的調用去深入研究 Native 層源碼。
源碼路徑如下:
src/sdk/android/
如下圖:
參考文章:
WebRTC 系列文章「視訊雲技術」你最值得關注的音視訊技術公衆号,每周推送來自阿裡雲一線的實踐技術文章,在這裡與音視訊領域一流工程師交流切磋。