天天看點

ijkplayer編譯(Ubuntu + Win雙系統)

前言

由于最近需要學習下ijkplayer,根據網上的教程編譯了幾次ijkplayer,遇到了一些坑,特記錄下來。本文分為以下三個部分,

  • Ubuntu下編譯前準備
  • 編譯ijkpalyer
  • 移植到Win平台

一、 Ubuntu下編譯前準備

我在Ubuntu 14.04和Ubuntu 16.04 (X64)按照相同的方法都完成了編譯,最終版本用的是16.04下編譯的。

1. 確定你的機器上已經安裝了git和yasm,如果沒有請在終端執行以下指令:

sudo apt-get update
sudo apt-get install git
sudo apt-get install yasm
           

2. 配置 JDK + SDK + NDK

  • JDK

    參考教程裡有些有這一步,有些并沒有,不知道JDK配置是不是必須的,要是在Ubuntu下做開發肯定是需要的,如果隻是編譯ffmpeg庫的話,是不需要的。

    JDK下載下傳位址(http://jdk.android-studio.org/)選擇合适的linux版本,字尾為tar.gz。

  • SDK

    SDK我是在android studio中文社群下載下傳的,SDK位址(http://sdk.android-studio.org/),字尾為tgz。

  • NDK

    NDK現在隻支援android-ndk-r10e這一個版本,之前和之後的版本我都試過,都不合适,linux下該版本可以在下面位址下載下傳,(http://blog.csdn.net/ultrapro/article/details/46008805),三個平台下的版本都有,字尾是.bin檔案。

在浏覽器中下載下傳之後,三個檔案都位于Downloads檔案夾下,我選擇把所有的外來庫和安裝程式都放在/opt檔案夾下,首先我建立了/opt/mylib檔案夾,并把以上三項都copy到該檔案夾下,

為了友善的話,可以将opt檔案夾賦予很多的權限,便于之後的操作,

sudo chmod -R +777 /opt
           

我就是由于NDK權限太低,開始總是編譯不成功,修改之後就好了。當然也可以針對單個檔案夾修改權限,-R參數就是指遞歸到檔案夾下所有的檔案。

控制台進入到Downloads檔案夾下,

cd ~/Downloads
           

運作下邊的指令完成從~/Downloads到/opt/mylib的複制,其餘兩項也是一樣,

cp jdk-8u91-linux-x64.tar.gz /opt/mylib/
           

對于SDK 和 JDK,可以直接解壓到目前檔案夾就好了,

tar zxvf jdk-8u91-linux-x64.tar.gz
tar zxvf android-sdk_r24.4.1-linux.tgz
           

對于NDK,按照下面方式安裝,

首先要賦予檔案可執行屬性(其實我都是圖省事直接用參數 +777,不知道會不會很不安全)。

sudo chmod +777 android-ndk-r10e-linux-x86_64.bin
           

然後按照下邊指令運作,

./android-ndk-r10e-linux-x86_64.bin
           

安裝完成之後,mylib檔案下的目錄結構如下,壓縮檔案我都還沒有删除。

ijkplayer編譯(Ubuntu + Win雙系統)

接下來,就需要配置ANDROID_SDK=xxx和ANDROID_NDK=xxx路徑了,我是直接修改etc/profile檔案,貌似還有好幾種方式,各有差別,感興趣的話可以參考引用3 的内容。

首先打開profile檔案,

sudo gedit /etc/profile
           

在檔案末尾添加如下内容,

export JAVA_HOME=/opt/mylib/jdk1._91  
export JRE_HOME=${JAVA_HOME}/jre  
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
export PATH=${JAVA_HOME}/bin:$PATH

export ANDROID_NDK="/opt/mylib/android-ndk-r10e/"
export ANDROID_SDK="/opt/mylib/android-sdk-linux/"
export PATH=$PATH:$ANDROID_NDK
           

儲存之後,

source /etc/profile
           

更新一下,此處完成了重新開機下電腦,下邊就可以進行編譯了。如果,前邊沒有任何錯誤的話,下邊将是非常順利的!

二、編譯ijkpalyer

此處可以完全參考 引用1 中的内容,稍後我會把自己的部分補充進來。

三、移植到Win平台

其實在ubuntu下隻是對ffmpeg進行了編譯,編譯出來的檔案直接可以在win下使用,參考 引用4 中的内容,成功在win下運作起來。

  1. 首先,我們要直接在windows下,下載下傳整個項目,https://github.com/Bilibili/ijkplayer。
  2. 然後,找到下圖對應的目錄,
    ijkplayer編譯(Ubuntu + Win雙系統)
  3. 我用的是三星 note2,用的是armv7a這個指令集。打開相應的檔案夾如下。
    ijkplayer編譯(Ubuntu + Win雙系統)
    将上圖中的兩個檔案夾複制到相應的位置,我用的虛拟機,裝了vm tools之後可以直接複制。
  4. 然後,更新下android.mk檔案,貌似由于linux和win下的檔案結束符不一樣子,不能直接複制,可以打開該檔案,直接将裡邊的内容複制到win下相應的檔案中。
    ijkplayer編譯(Ubuntu + Win雙系統)
  5. 大工告成,直接用android studio打開玩耍吧!

引用

1.最可靠的Ubuntu14.04平台下編譯ijkplayer教程

2.Android NDK r10e下載下傳位址

3.Linux中profile、bashrc、bash_profile之間的差別和聯系

4. 如何在Win下使用編譯好的ffmpeg庫

本文隻是在前人的基礎了,做了一些整合,把一些沒有明确說明的地方詳細表述了,從昨天下午開始弄,到現在也有1整天了,可以開始看代碼了。初學android,多多指教。

last modified 2016-8-4

by. HolaGod ([email protected])