由於項目原因,需要音視頻,所以最后選擇了開源的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
tjb@tjb-virtual-machine:~/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/ 目錄下)。
tjb@tjb-virtual-machine:~/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:這個時候需要架設服務器,由服務器來實現視音頻的中轉或者實現打洞,建立信道和視音頻流。
下一篇會寫一下關於實現視音頻的中轉或者實現打洞的服務器。敬請關注。
