最近在Android做流媒體相關(guān)的開(kāi)發(fā),一直想學(xué)習(xí)一下強(qiáng)大的VLC,正好趁此機(jī)會(huì)研究研究VLC-for-android的代碼,看看優(yōu)秀的開(kāi)源音視頻播放器是如何實(shí)現(xiàn)的。本文總結(jié)下在Linux平臺(tái)下如何編譯VLC-for-android。
創(chuàng)新互聯(lián)建站主營(yíng)額敏網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,重慶APP開(kāi)發(fā)公司,額敏h5微信平臺(tái)小程序開(kāi)發(fā)搭建,額敏網(wǎng)站營(yíng)銷推廣歡迎額敏等地區(qū)企業(yè)咨詢
編譯環(huán)境:Ubuntu 14.04 64bit,VLC版本2.1.5
參考的文章:https://wiki.videolan.org/AndroidCompile/
1. 準(zhǔn)備編譯環(huán)境
基本上按照這篇wiki的介紹就足夠了,為了順利完成編譯,建議首先保證相關(guān)的軟件或者依賴庫(kù)都已經(jīng)下載好了,我再?gòu)?qiáng)調(diào)一下幾個(gè)重點(diǎn)注意事項(xiàng)。
(1) Android SDK:必須使用SDK Platform Android 5.0, API 21,因?yàn)閂LC-for-android用到了Android 5.0 的一些API。
(2) 最好通過(guò)apt-get install 把下面這些依賴的軟件都安裝一遍,或更新到最新版
git,apache-ant (or ant), autoconf, automake, autopoint, cmake, gawk (or nawk), gcc, g++, libtool, m4, patch, pkg-config, ragel, subversion, unzip.
2. 下載源碼包
直接通過(guò)git下載VLC-for-android最新的源碼即可:
git clone git://git.videolan.org/vlc-ports/android.git
3. 編譯VLC源碼和VLC Android工程
(1) 配置編譯環(huán)境變量
具體參考wiki的介紹,你可以寫個(gè)shell腳本來(lái)執(zhí)行,避免每次編譯都要配置,下面是我的環(huán)境變量,可以根據(jù)你的路徑修改:
#! /bin/sh export ANDROID_SDK=/opt/android/sdk/ export ANDROID_NDK=/opt/android/android-ndk-r10/ export ANT_DIR=/opt/android/ant/ export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools:$ANT_DIR export ANDROID_ABI=armeabi-v7a
(2) 執(zhí)行編譯
sh compile.sh
VLC不愧是使用這么廣泛的播放器,它的編譯腳本寫得非常強(qiáng)大和智能,直接通過(guò)執(zhí)行compile.sh,它會(huì)自動(dòng)check所有的依賴,并通過(guò)網(wǎng)絡(luò)去下載缺失的庫(kù)。
首先,它會(huì)下載vlc的源碼,并存放在當(dāng)前目錄下。然后去下載依賴的第三方庫(kù)文件。
當(dāng)然,由于GFW的存在,有的時(shí)候下載會(huì)失敗,這個(gè)時(shí)候,就需要你手動(dòng)去Google搜索它正在下載的依賴文件,手動(dòng)下載好了之后放到 vlc/contrib/tarballs目錄下,然后再回到命令行重新執(zhí)行 sh compile.sh
它依賴的全部第三方庫(kù)文件如圖所示:
(3) 編譯問(wèn)題
編譯過(guò)程還算順利,只出現(xiàn)過(guò)一個(gè)大問(wèn)題,如下:
google/protobuf/unittest.proto:853:21: Missing field number. google/protobuf/unittest.proto:862:1: Reached end of input in message definition (missing '}'). make[3]: *** [unittest_proto_middleman] Error 1
網(wǎng)上也搜不到解決方案,我看了下GitHub上Protobuf的Readme,然后下載了最新的protobuf放到vlc/contrib/tarballs/contrib-android-arm-linux-androideabi/protobuf目錄下,執(zhí)行./configure --disable-shared,再編譯,沒(méi)想到就直接過(guò)了。
4. 加載VLC-For-Android的Java工程
編譯通過(guò)后,就可以直接在vlc-android/bin目錄下看到debug版的apk了,下面簡(jiǎn)單說(shuō)說(shuō)在Eclipse中加載vlc-android的整個(gè)工程。
打開(kāi)Eclipse,選擇Import,把vlc-for-android目錄下所有的工程到導(dǎo)入到Eclipse中(我去掉了TV工程),如圖所示,有5個(gè)必須的工程,其中,VLC是主工程,其他四個(gè)都是Lib工程。沒(méi)有什么意外的話,直接運(yùn)行VLC工程,就可以在Android手機(jī)上看到VLC播放器應(yīng)用了!
5. 總結(jié)
Vlc-for-android的編譯過(guò)程就簡(jiǎn)單地介紹到這兒了,有任何疑問(wèn)歡迎留言討論或者來(lái)信lujun.hust@gmail.com交流,或者關(guān)注我的新浪微博 @盧_俊 獲取最新的文章和資訊。