编译ijkplayer步骤流程和遇到的坑

一、编译环境

1、系统:window11下的子系统Ubuntu18.04.5 LTS

2、jdk:1.8.0_312

3、ndk:android-ndk-r10e-linux-x86_64

4、sdk:android-sdk_r24.4.1-linux

二、编译环境及相关依赖搭建

1、安装必要的软件和依赖

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

2、下载安装openjdk

sudo apt-get install openjdk-8-jre-headless

3、下载安装android NDK和SDK

在Ubuntu下编译,需要下载android ndk和sdk的Linux版本,以便安卓的交叉编译

android NDK下载链接 选择一个Linux版本的即可,ijkplayer官方推荐是android-ndk-r10e

android SDK下载链接 选择一个稍微高一点的Linux版本即可,我用的是android-sdk_r24.4.1-linux

然后把androidNDK和androidSDK分别解压到某个文件夹下。如/xxx/xxx/android-sdk-linux和/xxx/xxx/android-ndk-r10e

新下载好的sdk还需要一些初始化,可能就像windows下的SDKmanager一样还需要去下载一些工具插件之类的东西。我们需要打开android sdk manager,如下脚本启动:

sh /xxx/xxx/android-sdk-linux/tools/android

然后就跟windows下一样,选择下载一些必要的工具等,下载最新的Android SDK Tools和Android SDK Platform-tools以及Android SDK Build-tools,再下载一个最新的Android SDK Platform即可。

4、配置交叉编译相关环境变量

sudo vim /etc/profile

在/etc/profile配置文件的末尾加入如下部分相关变量:

export PATH=/xxx/xxx/android-sdk-linux/platform-tools:$PATH

export PATH=/xxx/xxx/android-sdk-linux/tools:$PATH

export ANDROID_NDK=/xxx/xxx/android-ndk-r10e

export PATH=/xxx/xxx/android-ndk-r10e:$PATH

让环境变量生效,运行如下命令,每次开机后一般需要运行一次:

source /etc/profile

环境变量配置好后,可以通过如下命令测试是否生效:

//测试ndk是否生效,如果有打印相关版本信息等,即是生效
ndk-build -v
 
//测试sdk是否生效,如果有打印相关版本信息等,即是生效
adb --version

三、下载ijkplayer源码

下载ijkplayer源码,指明ijkplayer-android,即:

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

四、开始编译

进入源码根目录:

cd ijkplayer-android

1、初始化

运行初始化脚本:

./init-android.sh

这个初始化脚本主要是去提取ffmpeg相关的库,以及libyuv和soundtouch等相关的库,需要保证网络的通畅,下载需要一段时间,若中间有错误,拉取失败,可多次运行拉取,直到成功

如果需要支持https协议的还需要执行如下的初始化脚本(一般都会需要):

./init-android-openssl.sh

2、编译openssl

先编译openssl,即是与https相关的编译。如下脚本编译:

先回到源码根目录,然后:

cd android/contrib
./compile-openssl.sh clean
./compile-openssl.sh all

最后跟all表示全平台编译,若只需要单独编译某个CPU平台,则后面的参数改为arm64、armv7a等等这些。

3、编译ffmpeg

打开config/module.sh,里面是各个编解码的格式,可以在里面根据自己的需要去开启或者禁用。这里暂不修改,使用默认的。

如下脚本进行编译:

先回到源码根目录,然后:

cd android/contrib/
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all

4、最后编译ijkplayer

如下脚本进行编译:

先回到源码根目录,然后:

cd android
./compile-ijk.sh all

编译成功之后会在android/ijkplayer/下生成对应的android工程,以及各个平台相关库等。

5、编译过程中遇到的坑

1、进行到步骤5初始化FFMPEG的时候,执行./init-android.sh会报env: bash\r: No such file or directory错误。

解决办法:

在终端输入如下命令。安装dos2unix,并把当前目录的所有文件进行格式转换.

(dos2unix是将Windows格式文件转换为Unix、Linux格式的实用命令。Windows格式文件的换行符为\r\n ,而Unix&Linux文件的换行符为\n. dos2unix命令其实就是将文件中的\r\n 转换为\n。)

一、brew install dos2unix

二、find . -type f -exec dos2unix {} \;

2. 没有文件读取权限

输入命令:sudo chmod 777 文件名

3、编译完后,so文件不能用,或者编译失败

确保之前的编译步骤、文件拉取是完整的

最后附上GitHub地址:https://github.com/EachyDone/Compiled-Ijkplayer

亲测有用的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值