Ijkplayer编译

记录一下编译ijkplayer过程

一、环境

1.1、VMware + ubuntu
1.2、安装git、vim

sudo apt install git
sudo apt install vim

二、配置编译环境

2.1、配置AndroidSDK环境
2.1.1、下载AndroidSDK
wget http://dl.google.com/android/android-sdk_r24.2-linux.tgz

国内下载地址:下载网站: http://tools.android-studio.org/index.php/sdk/

2.1.2、解压
tar -xvf android-sdk_r24.4.1-linux.tgz

解压后如图:
AndroidSdk
从Readme中可以知道需要执行更新指令:
AndroidSdk Readme

2.1.3、执行更新命令
tools/android update sdk --no-ui
2.1.4、配置环境变量

打开配置文件:

vim /etc/profile

添加环境变量:

# android-sdk
export ANDROID_SDK=/home/zzy/Library/AndroidSDK/android-sdk-linux # 需要替换成自己的路径
export PATH=$ANDROID_SDK:$PATH

生效环境变量

source /etc/profile
2.2、配置NDK环境
2.2.1、下载NDK
https://dl.google.com/android/repository/android-ndk-r14b-linux-x86_64.zip?hl=zh-cn

ijkplayer默认只支持11~14版本的ndk

2.2.2、解压
unzip android-ndk-r14b-linux-x86_64.zip
2.2.3、配置环境变量
vim /ect/profile

添加环境变量:

export ANDROID_NDK=/home/zzy/Library/android-ndk-r14b # 替换自己的路径
export PATH=$PATH:$ANDROID_NDK

生效环境变量

source /etc/profile
2.2.4、校验环境变量是否生效
ndk-build --version

ndk环境生效

三、 下载ijkplayer

3.1、下载ijkplayer
wget https://codeload.github.com/bilibili/ijkplayer/zip/refs/tags/k0.8.8

最好的办法肯定是用git下载,但是我使用git下载几次都出现错误所以只能使用wget下载。
注册:
一定要使用控制台下载,我一开始不是使用控制台下载,在编译的最后异步报错:

Error: Android.mk:1: *** missing separator. Stop. 

解压:

unzip k0.8.8
3.2、执行init-android.sh

进入ijkplayer解压后的目录:
在这里插入图片描述
为了加快初始化的编译速度,可以有以下3个选择配置(也可以不做):

  • 可选配置1:修改ffmpeg下载地址
    执行init-android.sh会下载ffmpeg等,如果网络条件不好可以修改下载地址,改为码云地址。
    在这里插入图片描述
  • 可选配置2:
    选择ffmpeg拉取版本,默认会拉取所有版本,在这里可以修改只拉取指定版本
    在这里插入图片描述
  • 可选配置3:
    init-android.sh会执行init-android-libyuv.sh指令拉取libyuv,可以修改libyuv下载地址
    在这里插入图片描述

执行初始化命令:

./init-android.sh
3.3、初始化openssl 支持 https

为了加快编译速度,可以有以下两个配置,打开init-android-openssl.sh :

  • 可选配置1:修改openssl 下载地址
  • 可选配置2:指定编译版本,比如arm64
    在这里插入图片描述
    执行脚本:
./init-android-openssl.sh 
3.4、配置解码器编译格式

进入config目录,在module-default.sh增加以下几行配置:

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

config目录下有三种配置:

更多的编解码器/格式
module-default.sh

较少的编解码器/格式 (包含hevc)
module-lite-hevc.sh

#较少的编解码器/格式 默认
module-lite.sh

一般我们使用module-default.sh配置,执行如下指令:

# 删除当前的module.sh 
rm module.sh 
# 使用module-default.sh配置
ln -s module-lite.sh module.sh
3.5、编译openssl
# 进入android/contrib 目录
cd android/contrib/

# 清除openssl编译文件
./compile-openssl.sh clean

# 编译openssl
./compile-openssl.sh all
# 也可以指定编译平台 ./compile-openssl.sh armv7a
3.5、编译ffmpeg
cd android/contrib/

./compile-ffmpeg.sh clean

./compile-ffmpeg.sh all
# 也可以指定编译平台 ./compile-ffmpeg.sh armv7a

注意:这里可能会报一个错误:
ERROR: Failed to create toolchain.
解决方案:安装python:

apt install python
3.6、编译ijkplayer

最后一步,执行 compile-ijk.sh 编译ijkplayer

# 回到android目录
cd ..

./compile-ijk.sh clean

./compile-ijk.sh all
# 也可以指定编译平台 ./compile-ijk.sh armv7a

编译完成后,可以在ijkplayer中android目录下查看编译结果:

在这里插入图片描述

3.6、编译报错问题

错误1:在编译ffmpeg的时候还会遇到错误
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

错误2: Error: Android.mk:1: *** missing separator. Stop.
编译到最后一步的时候出了这个错误,后来才发现我是因为我一开始不是使用控制台下载ijkplayer源码导致的,使用控制台下载就好了

参考:https://www.jianshu.com/p/8a1b663a3d2e
视频参考:https://www.bilibili.com/video/BV1VU4y1m7cm?spm_id_from=333.337.search-card.all.click

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值