ubuntu编译ijkplayer版本k0.8.8(ffmpeg4.0)

编译环境

  • 系统:ubuntu18.04
  • NDK: android-ndk-r10e
  • **sdk:**android-sdk_r24.4.1-linux

下载

sudo wget http://dl.google.com/android/repository/android-ndk-r10e-linux-x86_64.zip

sudo wget http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz

下载后解压到路径/xxx/xxx

配置环境变量

复制代码
sudo gedit /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="$ANDROID_NDK:$PATH"

# 加载环境变量
source /etc/profile
//测试ndk是否生效,如果有打印相关版本信息等,即是生效
ndk-build -v

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

代码拉取和配置修改

复制代码
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer
cd ijkplayer
git checkout -B latest k0.8.8

1、init-android.sh修改 FFmpeg 的版本(改成 4.0 版本):

复制代码
IJK_FFMPEG_UPSTREAM=https://github.com/Bilibili/FFmpeg.git
IJK_FFMPEG_FORK=https://github.com/Bilibili/FFmpeg.git
#IJK_FFMPEG_COMMIT=ff3.4--ijk0.8.7--20180103--001
IJK_FFMPEG_COMMIT=ff4.0--ijk0.8.8--20210426--001

2、编译类型(完整版)

复制代码
cd config 
rm module.sh 
ln -s module-default.sh module.sh # 完整版 

编译

1、初始化下载

复制代码
# 初始化Android环境
./init-android.sh

# 下载 openssl 源码
./init-android-openssl.sh

2、编译

复制代码
# 在项目根目录下执行
cd android/contrib 

# 编译 openssl
./compile-openssl.sh clean  
./compile-openssl.sh all  

# 编译 FFmpeg 
./compile-ffmpeg.sh clean 
./compile-ffmpeg.sh all  

# 编译 ijkplayer
cd ..  
./compile-ijk.sh all

遇到的问题

1、Unknown option "--disable-ffserver".

config/module.sh 文件,注释掉以下两行:

复制代码
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-ffserver"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-vda"

2、error: undefined reference to 'ff_ac3_parse_header'

config/module.sh 文件,增加如下一行:

复制代码
# 在 export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-bsfs" 下方添加:
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-bsf=eac3_core"

3.error:x0000000 这个问题折腾了好久

大多数网上文章建议多是把大B改成小b,很麻烦。后来在issus找到了回复,验证可行。

解决原文 (https://github.com/bilibili/ijkplayer/issues/4093

复制代码
在module-default.sh增加:
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-linux-perf"