Ubuntu12.4 下 WebRTC編譯


       由於項目原因,需要音視頻,所以最后選擇了開源的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:這個時候需要架設服務器,由服務器來實現視音頻的中轉或者實現打洞,建立信道和視音頻流。

 

下一篇會寫一下關於實現視音頻的中轉或者實現打洞的服務器。敬請關注。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM