VMware虚拟机编译ijkPlayer

1、安装虚拟机VMware-workstation-full-12.0.0-2985596.exe ,版本太旧需要先升级才能安装系统。

2、安装ubuntu-20.04.2.0-desktop-amd64.iso系统。4G运行+36G内存,太小的话系统可能起不来。

3、配置ndk环境,在home目录创建workdir,拷贝android-ndk-r10e-linux-x86_64.zip到该目录下,在当前目录点击右键->open in Terminal 

unzip android-ndk-r10e-linux-x86_64.zip 解压

xxx@ubuntu:/$ cd home/xxx/workdir/android-ndk-r10e/

xxx@ubuntu:~/workdir/android-ndk-r10e$ pwd

/home/xxx/workdir/android-ndk-r10e

使用 sudo gedit /etc/profile 命令打开 /etc/profile 文件,添加如下配置:

export ANDROID_NDK="/home/xxx/workdir/android-ndk-r10e" export PATH="$ANDROID_NDK:$PATH"

然后source /etc/profile ndk-build -v 如果有看到版本号说明配置成功

4、安装git

sudo apt install git

5、下载ijk源码

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

6、编译

git checkout -B latest k0.8.8 //0.8.8版本上创建新分支

如果是依赖服务器库的方式需要在gradle implementation 'tv.danmaku.ijk.media:ijkplayer-java:0.8.8' ,版本要与自己编译的版本对应。

如果以lib库方式依赖只需要 implementation project(path:'ijkplayer-java')

./init-android.sh //拉取ijk编译相关代码

出现问题Cloning into 'android/contrib/ffmpeg-armv5'... fatal: unable to access 'https://github.com/Bilibili/FFmpeg.git/': GnuTLS recv error (-54): Error in the pull function.

解决:vi init-android.sh

将所有 https://github.com/Bilibili/FFmpeg.git/改为git://github.com/Bilibili/FFmpeg.git/ 其他地方以此类推

编译ffmpeg

cd android/contrib/

./compile-ffmpeg.sh clean //清除历史ffmpeg下载文档

./compile-ffmpeg.sh all //下载所有cpu类型的支持库

出现问题make: not found

解决:sudo apt-get install make

出现问题nasm/yasm not found or too old. Use --disable-x86asm for a crippled build.

解决:sudo apt-get install yasm

分析:yasm是汇编编译器,ffmpeg为了提高效率使用了汇编指令,如MMXSSE等。所以系统中未安装yasm时,就会报上面错误。 如果不需要yasm也可以 ./configure --disable-x86asm 下载ffmpeg git clone https://git.ffmpeg.org/ffmpeg.git

编译so

cd ..

./compile-ijk.sh all

编译结束

7、生成文件目录

如果./compile-ijk.sh不带all,只会编译armv7a的。 android/ijkplayer/目录,各种芯片目录下会生成对应的三个.so,(分别在ijkplayer-arm64ijkplayer-armv5ijkplayer-armv7aijkplayer-x86ijkplayer-x86_64这些项目的src/main/libs/对应的名称 目录下分别生成libijkffmpeg.solibijkplayer.solibijksdl.so这三个so文件)。

8、修改

修改ffmpeg版本, init-android.sh IJK_FFMPEG_COMMIT=ff3.4--xx--xx

./init-android.sh

修改流程化脚本编译

要在ijkplayer源码根目录config文件夹下module-lite-hevc.sh文件中加上要支持的编码格式,比如添加支持mp2格式的音频编码格式

然后执行:

cd config
rm module.sh
ln -s module-lite-hevc.sh module.sh

初始化openSSLFFMPEG,这里会同步下载对应的代码,可能会比较耗时

./init-android-openssl.sh
./init-android.sh

编译   cdandroid/contrib下,执行清除命令,然后编译需要的so,这里的all是生成所有版本的,如果只需要对应版本的,可以把all替换成armv7a等你需要的版本。编译需要一段时间

./compile-openssl.sh clean//清除
./compile-ffmpeg.sh clean//清除
./compile-openssl.sh all//编译
./compile-ffmpeg.sh all//编译

生成对应so 切换到android目录下,执行脚本就可以生成so

./compile-ijk.sh all

在自己项目中使用编译好的so

1.将编译好的so文件拷贝到自己项目中的jniLibs文件夹下

 

2.然后把ijkplayer-java拷贝过来当library库引用,配置build.gradle apply plugin: 'com.android.library',并把多余文件删除

3.修改自己APPbuild.gradle

 

ok~

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值