標籤:
由於項目原因,需要音視頻,所以最後選擇了開源的WebRTC(採用BDS開源協議),並且是Google支援的開源項目。在Html5方面,Google的野心可見一般,為什麼這麼說,WebRTC支援瀏覽器。目前支援WebRTC的瀏覽器有Chrome,FireFox,Opera(最新版本,老版本就不支援),就是說,瀏覽器支援視音頻,不再需要安裝外掛程式了。不過微軟IE並不支援WebRTC,倒不是技術問題,這個你懂的。對於我等屌絲來說,至少有一種途徑,可以實現非外掛程式式的瀏覽器視音頻。要知道,IE中用Active是一件很痛苦的事情,當然用Flex,安裝才行,不像瀏覽器內建的來得直接。Google在大力推廣HTML5,並以WebRTC作為視音訊標準,相信前景很好。
WebRTC目前支援 Linux,Windows,Android,IOS,瀏覽器(目前只有Chrome,FireFox,Opera)各個平台能實現視音頻互連。Web頁面可以和手機端,手機端和PC端等都可以實現音視頻。是不是很酷!要動手編譯WebRTC,官方建議在Ubuntu下編譯。當然網上也有在Windows編譯的,但是我這是按官網的說明,進行編譯Android,所有選擇了Ubuntu編譯。如果要在Windows下編譯,請參考: http://www.chromium.org/developers/how-tos/build-instructions-windows.
WebRTC 的官網為 http://www.webrtc.org. 要訪問,在國內估計要通過VPN,這個你懂的。
VPN,建議還是購買一個吧,此處省略一百字。
1、環境準備: VMware Player 安裝 Ubuntu12.04(64位),當然你也可以選擇高版本的Ununtu版本。不知道怎麼安裝Ubuntu,百度或者Google下,就可以了,並且保證Ubuntu能夠上網,且能訪問國外網站。
2、編譯Android 前需要準備的 工作( 請參考: http://www.webrtc.org/native-code/android )
1)安裝JDK(為了後面編譯Android WebRtc): sudo apt-get install openjdk-7-jdk (64位 java version "1.7.0_65")
2)安裝GIT(為了下載depot_tools): sudo apt-get install git (版本2.2.2)
3)下載depot_tools,擷取源碼工具: git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
請參考: https://sites.google.com/a/chromium.org/dev/developers/how-tos/install-depot-tools
4)配置depot_too路徑: export PATH=`pwd`/depot_tools:"$PATH"
gedit ~/.bashrc 在檔案最後添加 export PATH=`pwd`/depot_tools:"$PATH" 儲存在退出。
5)安裝其他工具(為後面編譯作準備,請參考 http://www.webrtc.org/native-code/development/prerequisite-sw)
sudo apt-get install g++(>= 4.2)
sudo apt-get install python
sudo apt-get install g++
sudo apt-get install libnss3-dev
sudo apt-get install libasound2-dev
sudo apt-get install libpulse-dev
sudo apt-get install libjpeg62-dev
sudo apt-get install libxv-dev
sudo apt-get install libgtk2.0-dev
sudo apt-get install libexpat1-dev
sudo apt-get install lib32asound2-dev
sudo apt-get install ia32-libs
3、下載原始碼
1)建立一個目錄: mkdir webrtc
cd webrtc/
2)建立下載的設定檔:gclient config http://webrtc.googlecode.com/svn/trunk
[email protected]:~/WebRTC$ ll
drwxrwxr-x 3 tjb tjb 4096 1月 25 23:58 ./
drwxr-xr-x 28 tjb tjb 4096 1月 28 10:48 ../
-rw-rw-r-- 1 tjb tjb 275 1月 25 23:58 .gclient
-rw-rw-r-- 1 tjb tjb 339 1月 25 12:18 .gclient_entries
3)編輯設定檔.gclient :
vi .gclient
solutions = [
{ "name" : "src",
"url" : "http://webrtc.googlecode.com/svn/trunk",
"deps_file" : "DEPS",
"managed" : True,
"custom_deps" : {
},
"safesync_url": "",
},
]
cache_dir = None
target_os = [‘android‘,‘unix‘,‘windows‘]
//"name" : "src", trunk 改成 src,表示原始碼要存放的目錄。
//最後添加 target_os = [‘android‘,‘unix‘,‘windows‘] //,表示要編譯目標平台,Android,Unix, Windows,如果是要編譯IOS,就增加一個 IOS,
然後儲存退出命令: wq。
4)同步代碼:
gclient sync --force
說明: 這一步需要的時間很長,我是下載了三天,下了 11G,下載的大小,跟 target_os = [‘android‘,‘unix‘,‘windows‘] 裡面要下的目標平台有關。如果只下載android,則不要寫unix 和 windows,我是為了日後需要,所以先下載,以後再編譯。如果中間發現中斷了。你就不要不停地運行 gclient sync --force ,直到下載成功。(堅持不懈,直到成功!)
4、編譯代碼:
1)切換到下的目錄: cd src
2)讀取並執行環境命令 :source ./build/android/envsetup.sh
3)配置目標編譯平台: export GYP_DEFINES="$GYP_DEFINES OS=android"
4)下載編譯依賴的工具包(需要一些時間): ./build/install-build-deps.sh
5)下載編譯所需要的Build檔案(需要一些時間): gclient runhooks --force
6)編譯Debug版本: ninja -C out/Debug
7)編譯Release版本: ninja -C out/Release
以上步驟執行成功後:
在 src/out 下有 Debug 和 Release 目錄,裡面具有編譯好的DEMO檔案(AppRTCDemo程式的代碼就再 src/talk/examples/android/ 目錄下)。
[email protected]:~/WebRTC/src/out$ ll
total 20
drwxrwxr-x 5 tjb tjb 4096 1月 27 14:52 ./
drwxrwxr-x 11 tjb tjb 4096 1月 27 14:52 ../
drwxrwxr-x 28 tjb tjb 4096 1月 27 17:10 Debug/
drwxrwxr-x 5 tjb tjb 4096 1月 27 14:52 gypfiles/
drwxrwxr-x 28 tjb tjb 4096 1月 27 19:10 Release/
在Release 和Debug目錄下: AppRTCDemo-debug.apk和 WebRTCDemo-debug.apk
-rw-rw-r-- 1 tjb tjb 2552878 1月 27 19:09 AppRTCDemo-debug.apk
-rw-rw-r-- 1 tjb tjb 7455 1月 27 19:10 AppRTCDemoTest-debug.apk
-rw-rw-r-- 1 tjb tjb 1679104 1月 27 17:04 WebRTCDemo-debug.apk
注意,AppRTCDemo 與 WebRTCDemo的區別
WebRTCDemo:區域網路內的p2p,知道對方的ip和連接埠號碼就可以視音頻, 但是效果不是很好。
AppTRCDemo:這個時候需要架設伺服器,由伺服器來實現視音訊中轉或者實現打洞,建立通道和視音頻流。
下一篇會寫一下關於實現視音訊中轉或者實現打洞的伺服器。敬請關注。
Ubuntu12.4 下 WebRTC編譯