ijkplayer是基于FFmpeg的開源的移動平台視訊播放器,跨平台支援Android和IOS,支援本地播放和線上視訊播放,有點類似google的開源播放器ExoPlayer,想從C底層了解視訊播放的過程,ijkplayer是一個非常值得學習的開源項目。
主要先介紹下ijkplayer的編譯過程:
clone ijkplayer code source
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android
checkout latest branch
cd ijkplayer-android
git checkout -B latest k0
init compile source
下載下傳ffmpeg和libyuv的源碼
從遠端倉庫下載下傳編譯所需要的源碼,
./init-android.sh
compile ffmepg
cd android/contrib
./compile-ffmepg.sh clean
./compile-ffmpeg.sh all
compile ijkplayer
cd ..
./compile-ijk.sh
編譯完成打開官方工程
官方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的編譯過程和調用過程