歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> Linux下如何編譯Android-VLC開源播放器

Linux下如何編譯Android-VLC開源播放器

日期:2017/3/3 16:18:51   编辑:關於Linux

這兩天需要做音視頻播放相關的東西,所以重新找了目前android下的解碼庫。Android自帶的解碼庫支持不全,因此很多第三方播放器都是自帶解碼器,絕大部分都是使用FFMpeg作為解碼庫。我11年的時候也弄過視頻播放器,當時也是基於FFMpeg來做。那時候網上有關Android視頻解碼庫的資料不多,只在git上找到一個人移植FFMpeg,把它弄下來編譯,有興趣可以看看當時的文章:Android 視頻播放器 faplayer 編譯 。

言歸正傳,今天的主角是大名鼎鼎的VLC,做過視頻播放器的人,應該都聽過它大名,基本上所有平台都有它的身影。Android上今年也發布了beta版。這次編譯不太順利,主要是因為編譯前我看了網上一些其他人寫的編譯過程。然後選了一個來按照它編譯。最後在一個地方折騰了好久。原因是:那篇文章是去年的,現在VLC項目重新更新了,編譯方式簡化了。當然大部分編譯過程是一致的。最後查了半天,找到了VLC官網的編譯說明,

最後還是按照官方的重新編譯一次。有關VLC的說明這裡就不說了,有興趣可以去官網了解。

官方編譯說明:點這裡

1、下面是我編譯的環境:

主機系統:window7 64位旗艦版

虛擬機:Vmware Workstation 7.1.2

Linux版本:Ubuntu 10.10

AndroidSDK:adt-bundle-linux-x86-20130522

JDK:jdk-7u25-linux-i586.tar

NDK:android-ndk-r8e-linux-x86.tar

版本說明:SDK、JDK、NDK我目前都是使用最新的版本,都是官網下載。唯獨Linux是比較舊的版本,因為這個系統我用了兩年多,一直沒有升級到12.04。這個最後也導致我編譯的時候遇到一些因為某些軟件部版本低,導致編譯中斷。所以如果你還沒裝Linux系統,建議你直接安裝12.04穩定版。AndroidSDK是google的集成包,裡面包含Eclipse和ADT以及4.2的SDK。建議大家如果沒有配置好環境,就下載這個集成包。在配置JDK、SDK、NDK前,先把LVC編譯需要的一些第三方軟件包安裝好。

2、請保證你的機器已經安裝了下面軟件(最好安裝該軟件最新版)

apt-get install gcc

apt-get install g++

apt-get build-dep vlc

apt-get install git

apt-get install wget

apt-get install autoconf

apt-get install libtool

apt-get install subversion

apt-get install cmake

apt-get install ant

這個是必須安裝的軟件,而且最好是安裝最新版的軟件,我編譯的時候,因為ant使用了比較舊的版本,導致生成APK的時候失敗了,ant必須是1.8以上的版本才行。

3、JDK安裝配置

從Oracle官網下載JDK:點擊這裡

我是用最新的JDK7,32位還是64位根據你的系統來選,我這裡選擇的是32位

下載壓縮包解壓後放到一個目錄,我這裡放到/home/mythou/android-dev/目錄下,下面SDK、NDK我也會放到這目錄下。解壓後,需要配置環境變量,網上也很多教程,我簡單說說:

終端輸入:sudo gedit /etc/profile

添加環境變量,路徑是你解壓後jdk的路徑,下面是我實際配置的路徑。方便終端使用,加入PATH路徑裡面。

export JAVA_HOME=/home/mythou/android-dev/jdk/jdk1.7.0_25
export JRE_HOME=/home/mythou/android-dev/jdk/jdk1.7.0_25/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin:$ANT_HOME

修改environment配置

終端輸入:sudo gedit /etc/environment

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
export JAVA_HOME=/home/mythou/android-dev/jdk/jdk1.7.0_25
export JRE_HOME=/home/mythou/android-dev/jdk/jdk1.7.0_25/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

4、配置Android SDK

1、從Google android官網下載SDK集成開發包:點擊這裡

我這裡選擇的是Linux 32-bit,建議下載ADT Bundle的集成開發包,如果單純下載SDK,還得下載配置eclipse和ADT,比較復雜。下載後也是解壓到目標文件夾,我這裡是:/home/mythou/android-dev/adt-bundle-linux-x86-20130522目錄下。

同樣需要配置環境變量

終端輸入:sudo gedit /etc/profile 增加下面配置。

export ANDROID_SDK=/home/mythou/android-dev/adt-bundle-linux-x86-20130522/sdk
PATH=$PATH:$ANDROID_SDK/tools:$ANDROID_SDK/platform-tools

5、配置NDK

從Google官網下載DNK:點擊這裡

同樣,我這裡下載Linux的32bit版。

下載後,同樣解壓到目標文件夾,我這裡的是:/home/mythou/android-dev/

解壓後,終端輸入:sudo gedit /etc/profile 增加下面配置。

export ANDROID_NDK=/home/mythou/android-dev/android-ndk-r8e
PATH=$PATH:$NDKR6B:$ANDROID_NDK

到這裡,JDK、NDK、SDK都已經配置好,你可以打開adt-bundle-linux-x86-20130522目錄下的eclipse軟件,如果能正常打開說明環境基本配置好。

你也可以直接編個應用測試一下。或者終端檢查版本,例如檢查JDK版本:

6、其他環境變量配置

除了上面幾個,還有部分環境變量需要配置,當然你可以選擇直接在終端配置,不寫入配置文件,看個人喜歡。因為我經常需要重復編譯,

所以寫在配置文件比較方便。

增加ant變量

export ANT_HOME=/home/mythou/android-dev/apache-ant-1.8.0

需要說明的是,我的ant是自己重新下載源碼包安裝,因為系統默認安裝版本太低。後面會說到這個問題。

需要配置CPU類型,Android支持的CPU類型包含ARM和X86,所以編譯前需要指定CPU類型。

X86系列的

  export ANDROID_ABI=x86

ARM的Cortex-A8 or Cortex-A9系列

export ANDROID_ABI=armeabi-v7a

ARMv6

export ANDROID_ABI=armeabi

ARMv6 不帶 FPU

export ANDROID_ABI=armeabi
export NO_FPU=1

ARMv5 或者 模擬器

export ANDROID_ABI=armeabi
export NO_ARMV6=1

MIPS 系列

export ANDROID_ABI=mips

上面你可以直接輸入環境變量或者在profile設置。上面配置,我編譯的時候,選擇了ANDROID_ABI=armeabi-v7a 因為我測試機器是ARM A9系列的。到這裡,環境配置已經完成。如果你是修改etc/profile 需要注銷重啟,或者終端更新用戶配置source /etc/profile才能生效。

下面是我profile最後配置的樣式

export ANDROID_NDK=/home/mythou/android-dev/android-ndk-r8e
export NDKR5C=/home/mythou/ndkr5c
export NDKR6B=/home/mythou/ndkr6b
PATH=$PATH:$NDKR6B:$ANDROID_NDK
    
export ANDROID_ABI=armeabi-v7a
    
export JAVA_HOME=/home/mythou/android-dev/jdk/jdk1.7.0_25
export JRE_HOME=/home/mythou/android-dev/jdk/jdk1.7.0_25/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export ANT_HOME=/home/mythou/android-dev/apache-ant-1.8.0
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin:$ANT_HOME
    
export ANDROID_SDK=/home/mythou/android-dev/adt-bundle-linux-x86-20130522/sdk
PATH=$PATH:$ANDROID_SDK/tools:$ANDROID_SDK/platform-tools

7、獲取源碼:

從git獲取源碼:

git clone git://git.videolan.org/vlc-ports/android.git

獲取後,它會在你當前目錄下,創建android目錄,裡面包含下面文件

此時其實還沒有下載VLC源碼,這個是VLC的目錄結構和編譯的配置。

執行:

sh compile.sh

這個默認是編譯debug版本,如果需要編譯release版本,需要執行

sh compile.sh release

第一次編譯先編譯debug版。

此時才開始下載VLC的源碼。大概有200M的源碼。

然後就會自動編譯直到生成VLC的apk文件為止。

返回欄目頁:http://www.bianceng.cn/OS/Linux/

8、編譯過程遇到問題

雖然是自動編譯,不過中間多多少少會有問題,下面是我編譯過程遇到問題。

(1)checkout的問題

這個貌似是大小寫不匹配。可以修改complie或者再執行sh compile.sh都可以解決。

(2)libmpeg2庫沒法下載

需要說明一點是編譯過程中,需要下載很多第三方的庫,所以導致整個編譯過程很漫長。當然這個跟你網絡情況有關。

既然無法下載庫,只能手動自己下載一個了,自己百度找一個libmpeg2庫下載下來,放到指定文件夾即可。

把下載的libmpeg2庫,拷貝到下面路徑:

(3)config.sub文件太舊問題

10.10版本的Ubuntu,存在系統文件太舊額問題

下載這兩個文件替換即可:config.guess和config.sub,將此兩個文件拷貝到/usr/share/misc目錄下覆蓋,重新執行編譯命令。

(4)gettext版本太低

這個就是我上面說的getext需要0.18版本。自己手動找個0.18版本,然後編譯安裝。

這個解決後,就可以成功把解碼庫編譯出來:

我這裡編譯的是armeabi-v7a版本,會自動把解碼庫拷貝到LVC的android工程下的libs文件夾下。

接著編譯打包apk的時候出現了一個問題:

ant版本太低問題,需要ant1.8或以上版本。老方法,自己找對應版本編譯安裝。

最後就可以成功編譯出vlc的apk安裝包:

因為是debug版,出來的是VLC-debug.apk文件。

到這裡就算圓滿編譯出來,你也可以把java的工程移植出來放到eclipse上面使用修改。(vlc-android目錄下面就是對應的android應用工程)

如果是移植出來還要把java-libs文件夾下面關聯的3個工程移植出來。Eclipse下的工程關聯:

下面放兩張運行截圖:

下面提供eclipse下可以使用的工程,我只在4.2SDK下編譯,其他的沒有嘗試。

整個包含解碼庫的編譯工程太大了,有1.6G,我就不放上來了,有興趣可以自己編譯。只給出eclipse下可以編譯的工程,方便改界面。

不過還是建議自己編譯一下,因為現在的VLC只是beta版,後面出正式版,還需要重新編譯解碼庫。

VLC在Eclipse下可用工程源碼:armeabi-v7a-Debug版

http://pan.baidu.com/share/link?shareid=143767187&uk=3909894059

出處:http://www.cnblogs.com/mythou/p/3162595.html

Copyright © Linux教程網 All Rights Reserved