在之前的文章里,圖鴨君和大家介紹了ios系統(tǒng)下的音視頻通信系統(tǒng)的搭建以webrtc和tucodec兩個開源技術為例。今天就來再來和大家說一下炊苫,基于這兩款免費的音視頻通信系統(tǒng),如何在Android上進行搭建冰沙。
webrtc
一侨艾、準備
1. ?網(wǎng)絡環(huán)境
webrtc官網(wǎng):webrtc.org
準備好穩(wěn)定的VPN工具
?2 下載
?depot_tools:git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
(這一步需要在當前user目錄下進行執(zhí)行)
3 配置depot_tools環(huán)境變量:
export PATH=`pwd`/depot_tools:"$PATH"
配置成功可以執(zhí)行gclient命令,看看是否成功
二拓挥、下載源碼
1.創(chuàng)建Webrtc目錄?
mkdir Webrtc
cd Webrtc
2.初始化gclient
gclient config http://webrtc.googlecode.com/svn/trunk
3. 設計目標系統(tǒng)版本的配置
echo "target_os = ['android', 'unix']" >> .gclient
4. sync代碼
gclient sync --nohooks
( 中間如果因為網(wǎng)絡問題中斷唠梨,可以繼續(xù)執(zhí)行下載)
三、開始編譯
1 安裝編譯需要的軟件及配置
src/build/install-build-deps-android.sh
2 進入到src目錄下
執(zhí)行:build/android/envsetup.sh
3.選擇編譯工具和類型:
# 使?build.sh?里面的一些命令在當前環(huán)境中生效
source android/build.sh
# 自動安裝部署一些依賴的工具
install_dependencies
# 獲取項目部署工具和源碼侥啤,以最新的源碼作當前版本
get_webrtc# 指定編譯版本当叭、架構
# Debug?
export WEBRTC_DEBUG=ture只要armv7的
export WEBRTC_ARCH=armv7
# 指定版本號
get_webrtc 9792
# begin build_apprtc
prepare_gyp_defines &&
execute_build
說完webrtc,接下來我們看看tucodec
Tucodec
一盖灸、準備:
首先在圖鴨官網(wǎng):http://tucodec.com 進行注冊蚁鳖,獲得SDK中所需要的AppKey、AppSecret赁炎,注冊登錄后如下圖所示:
其次到開發(fā)者里選擇下載 android 中所需SDK。
最后解壓徙垫,如下圖所示:
voip_android_demo1.0 是用于演示的 demo讥裤,圖鴨君也將要按照這個 demo 以及SDK 開發(fā)文檔進行講解,打開resource資源文件姻报,如圖4所示:
將 voip_android.aar 提取出來導入到工程己英,里面包含了提供相關操作的 java類以及 so 庫,配置相關的環(huán)境吴旋。
導入“voip_android.aar”文件(如圖5)
在“l(fā)ibs”文件夾下添加aar包损肛,在build文件夾下添加:
repositories {
? ? flatDir {
? ? ? ? dirs 'libs'
? ? }
}
在dependencies下添加:
compile(name: 'voip_android', ext: 'aar')
配置其他三方庫(如圖5)
在gradle文件里面的dependencies 下添加下面三方庫:
api "com.alibaba:fastjson:1.1.63.android"
加入權限
AndroidManifest.xml加入以下權限:
完成上述操作后,我們的音視頻通訊app所需的大體框架已經(jīng)完成荣瑟,之后就是碼代碼荧关,完成系統(tǒng)UI界面繪制和用戶之間通訊的邏輯操作。
在圖鴨科技提供的SDK中褂傀,我們可以看到只需要調(diào)用三個類進行操作,可見快速集成音視頻通信并不是那么復雜加勤。如圖所示:
二仙辟、操作類定義:
1同波、TYVoipAndroid:提供所有Voip相關方法
2、TYVoipVideoCapture:攝像頭管理類
3叠国、TYVoipVideoRender:Voip客戶端視頻渲染視圖.未檩,渲染在此視圖上進行
了解上述主要接口文件及其定義后,我們來了解SDK中的通信原理:在SDK中粟焊,所有用戶都以通訊節(jié)點的形式存在冤狡,作為節(jié)點的用戶都擁有自己唯一的表示—— UserID ,整個SDK會根據(jù)每個用戶的UserID來進行通訊项棠。
例如悲雳,甲和乙之間進行通訊,假設甲的UserID為401香追,乙的UserID為402合瓢,甲登錄后向乙發(fā)送我要和你開視頻,乙登錄后向甲發(fā)送我要和你開視頻透典,甲開始渲染乙的視圖晴楔,乙開始渲染甲的視圖 。完成上述所有操作后峭咒,甲乙建立通訊税弃。
三、完整的SDK使用步驟簡介:
四凑队、部分代碼解釋:(從用戶甲的實現(xiàn)代碼來解釋)
項目中最重要的代碼介紹完啦则果,那測試一下,看看我們的成果吧顽决。
達到上圖所示結(jié)果短条,一套完整的android音視頻通信系統(tǒng)就完成了。
總結(jié)
Webrtc使跨平臺才菠、跨瀏覽器通訊成為可能茸时,免費的開源技術更是便利了每一個音視頻通信的開發(fā)者,是這個時代的福音赋访;但是webrtc配置環(huán)境復雜可都,國內(nèi)使用Google搜索的限制較多,將簡單Demo運行起來門檻都很高蚓耽,再加上基于web端開發(fā)的webrtc自身對于本地開發(fā)就不是很友好渠牲,因此編譯和運行難度就無形中增大了許多。
此外webrtc只是一個客戶端步悠,更適合1對1签杈,并不適合多對多的視頻通話,如果你想支持多方,還得借助其他服務端答姥,這也是一個十分有技術門檻的活铣除。因此如果你本身沒有音視頻開發(fā)經(jīng)驗、項目時間又緊鹦付、而且后續(xù)也不想投入太多資源在這上面尚粘,我基本上不建議你考慮webrtc了,嘗試其他第三方的SDK吧敲长。
tucodec作為國內(nèi)第一個免費的音視頻通訊私有協(xié)議郎嫁,對于國內(nèi)的開發(fā)者更加友好,在編譯上也避免了webrtc的種種困難祈噪,但是由于這還是一項最新開源技術泽铛,難免也存在文檔不夠詳盡,出現(xiàn)問題沒有線上解決方案的編譯困難钳降。
總而言之厚宰,編譯是個細心活,大家且編且珍惜遂填。