ijkPlayer 在 Ubuntu20.04 下编译

2,312 阅读2分钟

编译环境准备

1.下载 Android Studio

2.下载 android-ndk-r14b-linux-x86_64.zip

下载好 Android Studio 后,在你自己的 home 目录下新建一个文件夹 android studio 然后执行命令:

sudo tar -xvf android-studio-ide-201.7199119-linux.tar.gz

解压好后,就会出现一个 android-studio 目录 在 bin 目录下执行 ./studio.sh 命令打开 Android stuido

1.png

然后随便新建一个工程,等工程能顺利打开后,可以在 local.properites 看到我们 SDK 的位置, 先记录下。

image.png

可以看到时在 /home/liang/Android/Sdk 目录下存放了 Android Sdk 同样的,在与 Sdk 同级目录下创建一个 Ndk 目录。 把下载好的 ndk-r14b 放到 Ndk 目录下,然后执行解压命令:

sudo unzip android-ndk-r14b-linux-x86_64.zip

image.png

下载 ijkPlayer 源码

先下载 Git 工具,执行命令:

sudo apt-get update 
sudo apt-get install git

编译

这里可以参考这篇博客

上面博客里面最后的 demo 需要修改根 gradle 文件:

buildscript {
    repositories {
        jcenter()
        maven {
            url 'https://maven.google.com/'
            name 'Google'
        }
    }
  }
  
allprojects {
    repositories {
        jcenter()
        maven {
            url 'https://maven.google.com/'
            name 'Google'
        }
    }
}

博客里面提到 ijkplayer/android/contrib/tools/do-compile-ffmpeg.sh 文件修改后的参考:

image.png

3.png

compile-ijk.sh 的修改。

image.png

遇到的错误

错误1:每次执行编译终止于:ERROR:Failed to create toolchain

可以参考这篇文章,可以通过命令

python2 -v 来查看是否安装了 python2

解决方法:

1.可以按照上面文章里面把 python 修改成 python3

2.或者下载 python2

sudo apt-get install python

我这里通过第二种方法来解决的。

错误2: 编译过程中报:BFD: libncurses.so.5: cannot open shared object file: No such file or directory

sudo apt install apt-file
sudo apt-file update
sudo apt-file find libncurses.so.5
sudo apt install libncurses5

错误3:遇到 ./libavutil/timer.h:38:31: fatal error: linux/perf_event.h: No such file or directory

一般来说都是在执行命令 ln -s module-default.sh module.sh 之后,编译的时候才会遇到这个问题,所以我们修改的是 config 目录下的 module.sh 文件。在文件开头加上下面两行:

export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-linux-perf"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-bzlib"

image.png