如何搭建音視頻通訊系統(tǒng)之Android篇

在之前的文章里,圖鴨君和大家介紹了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赁炎,注冊登錄后如下圖所示:

圖1 注冊后獲取AppKey醉箕、AppSecret

其次到開發(fā)者里選擇下載 android 中所需SDK。

圖2 SDK下載展示

最后解壓徙垫,如下圖所示:

圖3 SDK解壓后內(nèi)容

voip_android_demo1.0 是用于演示的 demo讥裤,圖鴨君也將要按照這個 demo 以及SDK 開發(fā)文檔進行講解,打開resource資源文件姻报,如圖4所示:

圖4 resource文件夾內(nèi)容

將 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)問題沒有線上解決方案的編譯困難钳降。

總而言之厚宰,編譯是個細心活,大家且編且珍惜遂填。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末铲觉,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子吓坚,更是在濱河造成了極大的恐慌撵幽,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件礁击,死亡現(xiàn)場離奇詭異盐杂,居然都是意外死亡,警方通過查閱死者的電腦和手機哆窿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門链烈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人挚躯,你說我怎么就攤上這事强衡。” “怎么了码荔?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵漩勤,是天一觀的道長。 經(jīng)常有香客問我缩搅,道長越败,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任硼瓣,我火速辦了婚禮究飞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己亿傅,他們只是感情好霉祸,可當我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著袱蜡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪慢宗。 梳的紋絲不亂的頭發(fā)上坪蚁,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天,我揣著相機與錄音镜沽,去河邊找鬼敏晤。 笑死,一個胖子當著我的面吹牛缅茉,可吹牛的內(nèi)容都是我干的嘴脾。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蔬墩,長吁一口氣:“原來是場噩夢啊……” “哼译打!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拇颅,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤奏司,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后樟插,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體韵洋,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年黄锤,在試婚紗的時候發(fā)現(xiàn)自己被綠了搪缨。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡鸵熟,死狀恐怖副编,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情旅赢,我是刑警寧澤齿桃,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站煮盼,受9級特大地震影響短纵,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜僵控,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一香到、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦悠就、人聲如沸千绪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽荸型。三九已至,卻和暖如春炸茧,著一層夾襖步出監(jiān)牢的瞬間瑞妇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工梭冠, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留辕狰,地道東北人。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓控漠,卻偏偏與公主長得像蔓倍,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子盐捷,可洞房花燭夜當晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,162評論 25 707
  • 之前我們介紹了兩款免費音視頻通信系統(tǒng)關于ios demo的搭建偶翅,今天我們繼續(xù)來介紹windows demo的搭建,...
    Tucodec圖鴨科技閱讀 740評論 0 1
  • 今天又是周五了毙驯,和往常一樣明后天又要放假了倒堕。我已經(jīng)很久沒有好好的休息了,一到放假我就要練車爆价,這周雖然同往常一樣也要...
    鈴鈴子閱讀 171評論 0 1
  • 概念單例模式: 只有一個實例存在垦巴。通過單例模式可以保證系統(tǒng)中一個類只有一個實例而且該實例易于外界訪問,從而方便對實...
    天外來人閱讀 287評論 0 0
  • “我們彼此還要錯過多久,才能遇到” 原來你還是存在的序愚,在分手之前我一直以為前女友就是你憔披,那個和我相守一輩子的人。 ...
    different_loyal閱讀 509評論 3 4