前一段時間在做Android下的音樂和視頻播放器,音樂播放器有很多好的開源項目,而且大部分比較實用(有空會專門寫一篇關於音樂播放器的文章)。但是視頻方面的開源項目實在不多,主要是跟Android視頻解碼有關。Android預設只支援3gp和MP4兩種視頻格式,所以很多市面上的視頻播放器都內建了第三方解碼器。第三方解碼器,目前主要是FFMPEG和VLC解碼器。VLC官方正在開發一個Android平台的播放器,以後應該可以參考。這次主要是用到了一個開源項目faplayer。這個開源項目主要是用到了VLC做解碼庫。faplayer目前控制方面的功能比較簡單,但是解碼效果比較理想,接近主流的Android視頻播放器的播放效果。支援常規的視頻格式。
雖然源碼都能從網站上下載下來,不過需要用NDK編譯出解碼庫,程式才能跑起來。用NDK編譯VLC解碼庫可以在window下和Linux下進行。不過我個人在window下折騰了兩天還沒弄好,最後只能在Linux下編譯(window下編譯需要安裝cygwin和window下NDK,安裝cygwin,我花了一個下午,主要是它需要重網路下載很多資料。從這點上來說,其實直接裝個Ubuntu更快)。
下面在Linux下用NDK編譯VLC解碼庫的步驟:
1、 首先用git clone 下載faplayer的源碼。最好用git clone下載。直接下載zip壓縮包,編譯的時候有問題。需要把include的檔案夾修改。
git clone https://github.com/tewilove/faplayer.git
2、 安裝ndkR6b
安裝google的NDK,這裡我用的是R6b版本。當前最新的Linux版本。
http://dl.google.com/android/ndk/android-ndk-r6b-linux-x86.tar.bz2
3、 安裝ruby
在Ubuntu下安裝ruby: sudo apt-get install ruby
4、 設定ndk的環境變數(不一定需要設定,設定了,方便後面使用)
輸入: sudo gedit /etc/profile 開啟profile檔案,在最後,加入
export NDKPATH="/home/username/ ndk dir"
username = 是你使用者的名字
ndk dir = 是你放NDK的根目錄,根目錄下有ndk-build檔案
在終端使用 source /etc/profile 重新整理內容。或者重啟終端也可以
驗證設定是否正確:
echo $NDKPATH 如果設定正確會輸入你設定的路徑
cd $NDKPATH 跳轉到NDK根目錄
環境變數一定要設定好,否則後面無法編譯
5、 修改build.sh檔案
Faplayer根目錄下有一個build.sh檔案,開啟。第4行 ndk-build $@ || exit 1
改為 $ NDKPATH/ndk-build $@ || exit 1
主要是設定好編譯的NDK的路徑
6、 終端下執行 ./build.sh
這個編譯要花點時間,大概十分鐘左右。編譯好在libs檔案夾下有個一個libvlccore.so 大概11.3M的動態庫。
這裡還有一點需要說明,上面只是編譯出libvlccore.so的解碼庫。其實faplayer的指令檔build.sh是可以編譯出整個apk檔案的,不過還需要安裝Ant和android的SDK以及配置相關開發環境。因為我主要是在window下開發Android的應用。所以我只要得到libvlccore.so就可以把工程拷到window下繼續開發。把工程拷到window下,用eclipse開啟,重新編譯一次就好了。
build.sh預設是編譯出一個arm-v7版本的動態庫,如果需要在arm-A9或者arm-v7以下版本編譯,需要調整編譯參數。主要是Android.mk的編譯參數。
用我自己的手機defy測試,播放效果不錯。有空再上來~