ijk编译so踩坑
2023-01-10 本文已影响0人
Bug_Maker001
ijk人家提供了一系列的版本,可以直接导入
dependencies {
# required, enough for most devices.
compile 'tv.danmaku.ijk.media:ijkplayer-java:0.8.8'
# Other ABIs: optional
compile 'tv.danmaku.ijk.media:ijkplayer-armv7a:0.8.8'
compile 'tv.danmaku.ijk.media:ijkplayer-armv5:0.8.8'
compile 'tv.danmaku.ijk.media:ijkplayer-arm64:0.8.8'
compile 'tv.danmaku.ijk.media:ijkplayer-x86:0.8.8'
compile 'tv.danmaku.ijk.media:ijkplayer-x86_64:0.8.8'
# ExoPlayer as IMediaPlayer: optional, experimental
compile 'tv.danmaku.ijk.media:ijkplayer-exo:0.8.8'
}
但是呢,不支持https的视频链接,就是这么神奇
不过,人家提供了源码让你自己去编译
1、首先安装环境,人家也提供了方法
# install homebrew, git, yasm
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install git
brew install yasm
# add these lines to your ~/.bash_profile or ~/.profile
# export ANDROID_SDK=<your sdk path>
# export ANDROID_NDK=<your ndk path>
# on Cygwin (unmaintained)
# install git, make, yasm
官方指定的ndk版本是NDK r10e,我这里用的是r13b,也是可以的,但是更高的版本貌似会有问题
2、然后下载源码
https://github.com/bilibili/ijkplayer.git
创建本地分支
git checkout -B latest k0.8.8
3、怎么编译
编译前选择你的配置,对应怎么选择,开源工程也有标注,这里使用默认的
cd config
rm module.sh
ln -s module-default.sh module.sh
初始化openSSL和FFMPEG
如果你想要更改编译ffmpeg4.0分支代码,怎么做呢?
打开init-android.sh,修改指定的ffmpeg仓库的对应commit就好
image.png
配置改好了,执行初始化脚本,下载对应仓库资源了
./init-android-openssl.sh
./init-android.sh
然后执行编译
./compile-openssl.sh clean//清除
./compile-ffmpeg.sh clean//清除
./compile-openssl.sh all//编译
./compile-ffmpeg.sh all//编译
在这中间我遇到了两个问题:
第一个问题:Unknown option “–disable-ffserver”
Unknown option “–disable-vda”
解决:
将config/module.sh中的
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-vda"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-ffserver"
注释了就可以了
在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"
第二个问题:ERROR: Unknown host CPU architecture: arm64
网上大神说是因为是因为电脑是m1的芯片,所以编译有问题
解决:修改ndk-build文件,改为
#!/bin/sh
DIR="$(cd "$(dirname "$0")" && pwd)"
arch -x86_64 /bin/bash $DIR/build/ndk-build "$@"
image.png
4、编译生成最后so
返回Android目录下,执行
./compile-ijk.sh all
好了,最后so就在ijkplayer对应的架构下面