天天看點

ijkPlayer編譯流程記錄clone ijkplayer code sourcecheckout latest branchinit compile sourcecompile ffmepgcompile ijkplayer編譯完成打開官方工程

ijkplayer是基于FFmpeg的開源的移動平台視訊播放器,跨平台支援Android和IOS,支援本地播放和線上視訊播放,有點類似google的開源播放器ExoPlayer,想從C底層了解視訊播放的過程,ijkplayer是一個非常值得學習的開源項目。

主要先介紹下ijkplayer的編譯過程:

ijkPlayer編譯流程記錄clone ijkplayer code sourcecheckout latest branchinit compile sourcecompile ffmepgcompile ijkplayer編譯完成打開官方工程

clone ijkplayer code source

git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android
ijkPlayer編譯流程記錄clone ijkplayer code sourcecheckout latest branchinit compile sourcecompile ffmepgcompile ijkplayer編譯完成打開官方工程

checkout latest branch

cd ijkplayer-android
git checkout -B latest k0
           
ijkPlayer編譯流程記錄clone ijkplayer code sourcecheckout latest branchinit compile sourcecompile ffmepgcompile ijkplayer編譯完成打開官方工程

init compile source

下載下傳ffmpeg和libyuv的源碼

從遠端倉庫下載下傳編譯所需要的源碼,

./init-android.sh
ijkPlayer編譯流程記錄clone ijkplayer code sourcecheckout latest branchinit compile sourcecompile ffmepgcompile ijkplayer編譯完成打開官方工程
ijkPlayer編譯流程記錄clone ijkplayer code sourcecheckout latest branchinit compile sourcecompile ffmepgcompile ijkplayer編譯完成打開官方工程

compile ffmepg

cd android/contrib
./compile-ffmepg.sh clean
./compile-ffmpeg.sh all
           
ijkPlayer編譯流程記錄clone ijkplayer code sourcecheckout latest branchinit compile sourcecompile ffmepgcompile ijkplayer編譯完成打開官方工程
ijkPlayer編譯流程記錄clone ijkplayer code sourcecheckout latest branchinit compile sourcecompile ffmepgcompile ijkplayer編譯完成打開官方工程
ijkPlayer編譯流程記錄clone ijkplayer code sourcecheckout latest branchinit compile sourcecompile ffmepgcompile ijkplayer編譯完成打開官方工程
ijkPlayer編譯流程記錄clone ijkplayer code sourcecheckout latest branchinit compile sourcecompile ffmepgcompile ijkplayer編譯完成打開官方工程
ijkPlayer編譯流程記錄clone ijkplayer code sourcecheckout latest branchinit compile sourcecompile ffmepgcompile ijkplayer編譯完成打開官方工程
ijkPlayer編譯流程記錄clone ijkplayer code sourcecheckout latest branchinit compile sourcecompile ffmepgcompile ijkplayer編譯完成打開官方工程

compile ijkplayer

cd ..
./compile-ijk.sh
           
ijkPlayer編譯流程記錄clone ijkplayer code sourcecheckout latest branchinit compile sourcecompile ffmepgcompile ijkplayer編譯完成打開官方工程
ijkPlayer編譯流程記錄clone ijkplayer code sourcecheckout latest branchinit compile sourcecompile ffmepgcompile ijkplayer編譯完成打開官方工程

編譯完成打開官方工程

官方Android工程的檔案夾在android/ijkplayer中,結構如下:

.
├── build
│   ├── generated
│   └── intermediates
├── build.gradle
├── gradle
│   └── wrapper
├── gradle.properties
├── gradlew
├── gradlew.bat
├── ijkplayer-arm64
│   ├── build
│   ├── build.gradle
│   ├── gradle.properties
│   ├── ijkplayer-arm64.iml
│   ├── proguard-rules.pro
│   └── src
├── ijkplayer-armv5
│   ├── build
│   ├── build.gradle
│   ├── gradle.properties
│   ├── ijkplayer-armv5.iml
│   ├── proguard-rules.pro
│   └── src
├── ijkplayer-armv7a
│   ├── build
│   ├── build.gradle
│   ├── gradle.properties
│   ├── ijkplayer-armv7a.iml
│   ├── proguard-rules.pro
│   └── src
├── ijkplayer-example
│   ├── build
│   ├── build.gradle
│   ├── ijkplayer-example.iml
│   ├── proguard-rules.pro
│   └── src
├── ijkplayer-exo
│   ├── build
│   ├── build.gradle
│   ├── gradle.properties
│   ├── ijkplayer-exo.iml
│   ├── proguard-rules.pro
│   └── src
├── ijkplayer.iml
├── ijkplayer-java
│   ├── build
│   ├── build.gradle
│   ├── gradle.properties
│   ├── ijkplayer-java.iml
│   ├── proguard-rules.pro
│   └── src
├── ijkplayer-x86
│   ├── build
│   ├── build.gradle
│   ├── gradle.properties
│   ├── ijkplayer-x86.iml
│   ├── proguard-rules.pro
│   └── src
├── ijkplayer-x86_64
│   ├── build
│   ├── build.gradle
│   ├── gradle.properties
│   ├── ijkplayer-x86_64.iml
│   ├── proguard-rules.pro
│   └── src
├── local.properties
├── settings.gradle
└── tools
    ├── gradle-bintray-upload.gradle
    ├── gradle-mvn-push.gradle
    └── gradle-on-demand.gradle

 directories,  files
           

Android的官方Demo在ijkplayer-example中,後面文章會詳細一點分析ijkplayer的編譯過程和調用過程

繼續閱讀