编译ijkplayer

Ubuntu编译ijkplayer

Posted by XYH on December 16, 2019

编译ijkplayer

鉴于公司即将开始的直播APP开发,对市面上主流播放器进行了考究之后决定采用Bilibili开源的ijkplayer作为播放器,本文记录如何在Ubuntu下编译ijkplayer,Windows安装虚拟机的教程可以参考这里

环境准备

本次编译需要的环境如下:

  • JDK
  • SDK
  • NDK
  • Git
  • Make
  • vim
  • yasm

JDK

在Ubuntu下访问orace.com

SDK

在Terminal下输入:

wget https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip

解压下载好的文件:

unzip sdk-tools-linux-3859397.zip

检查当前sdk安装信息:

sdkmanager –list

安装对应的package:

sdkmanager “build-tools;28.0.1”

NDK

ijkplayer编译的版本为NDK r10e 所以本文采用的环境也相同。

Terminal:

wget http://dl.google.com/android/ndk/android-ndk-r10e-linux-x86_64.bin

依次执行: chmod a+x android-ndk-r10e-linux-x86_64.bin

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

等截面提示(Everything is ok)。

Git

sudo apt-get install git

yasm

sudo apt-get install yasm

vim

sudo apt install vim

Make

sudo apt-get install ubuntu-make

等所有的需要的环境准备好之后,下一步是配置环境变量。

使用vim打开/etc/profile,在文件末尾追加以下环境变量,本文以我的虚拟机目录为例。

1
2
3
4
5
6
export JDK_HOME=/home/jdk/jdk1.8.0_231
export PATH=${JDK_HOME}/bin:$PATH
export ANDROID_SDK=/home/sdk/tools
export PATH=${ANDROID_SDK}/bin:${PATH}
export ANDROID_NDK=/home/ndk/android-ndk-r10e
export PATH=$PATH:$ANDROID_NDK

至此环境准备完毕,接下来是编译步骤。

编译ijkplayer

编译流程如下:

  • 获取ijkplayer的代码
  • 切换到最新的分支
  • 初始化android
  • 编译脚本配置
  • 获取openssl获取https支持
  • 编译openssl
  • 编译ffmpeg
  • 编译ijkplayer

下载ijkplayer-android的代码

1
git clone https://github.com/Bilibili/ijkplayer ijkplayer-android

切换到最新的分支

1
git checkout -B latest k0.8.8

初始化Android

1
./init-android.sh

编译脚本配置

ijkplayer默认编译配置在config/目录下,默认使用的是module-default.sh,可以使用vim命令打开里面内容查看具体支持的播放音视频类型等。

官方提供的四个编译脚本分别为:

  • module-default.sh:最多的编码解码支持。
  • module-lite-hevc.sh:主流的编码解码支持(支持hevc),更小的体积。
  • module-lite.sh:主流的编码解码支持,更小的体积。(默认编译使用的是这个脚本)

本文以编译最全的so为例。

需要执行的操作如下:

1
2
3
cd config
rm module.sh
ln -s module-default.sh 

支持https

返回到根目录执行:

1
./init-android-openssl.sh

编译openssl

1
2
3
cd android/contrib
./compile-openssl.sh clean
./compile-openssl.sh all

编译ffmpeg

如果需要编译指定的so可以使用: ./compile-ffmpeg.sh armv7a 本文以全部为例:

1
2
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all

编译ijkplayer

1
./compile-ijk.sh all

编译完成

1
ijkplayer-android/android/ijkplayer 

目录下各so目录下可以找到编译好的so文件。

伸手党?