window环境(不推荐)
1、编译前准备环境
cygwin+ndkr10e+sdk+git
2、ijkplayer源码地址(使用版本为0.8.8)
https://github.com/bilibili/ijkplayer
以上就是我编译前所准备的环境
3、正式踩坑
坑1、源码下载时间久(ijkplayer+ffmpeg大概下载一天,如果报错可能不止)
git clone https://github.com/bilibili/ijkplayer.git
由于只下载这部分代码只能满足http地址,而我想要支持rtsp,因此需要重新编译ffmpeg,根据官网提示继续执行下载源码操作(./init-android.sh)
后面的过程我参考博客https://blog.csdn.net/qq372848728/article/details/62170288
git clone 慢我使用了网上找的的方法(但是好像没什么用~~~速度快了一点<~~>)
C:\Windows\System32\drivers\etc\hosts
还有一种是使用代理的方式下载(自行百度吧,我没有用过)
中途采用过直接下载zip的方式,但是并没有对应git的相关信息!没办法,最终还是花了一天时间下载成功,想想就心累呀
坑2、./compile-ffmpeg.sh armv7a (为了减少编译量只编译一个)
(1)cygwin环境有问题一直报
IJK_NDK_REL=
You need the NDKr10e or later
解决方法:
--1、有的环境下重新导入ndk后能通过----------export ANDROID_NDK=本地ndk路径
--2、还是不行,重新安装cygwin,当然卸载cygwin也是坑,找了半天采用下面方式卸载重装成功
卸载cygwin(手动删除方式)
(1、rm -f /cygdrive/c/你的临时文件夹(通过另一个ssh工具,如MobaXtrem)
(2、停止cron service (有可能会报错,报错就过滤这步)
$ cygrunsrv --stop cron
$ cygrunsrv --remove cron
(3、停止并删除inetd服务
$ net stop inetd
(4、删除安装文件夹,默认是c:\cygwin(有可能报某程序已经打开了一个文件,任务管理器中关闭对应的dash进程)
(5、删除桌面上的icon,和开始菜单里的启动文件夹
(6、删除注册表里的相关项
(HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions
(HKEY_CURRENT_USER\Software\Cygnus Solutions
(7、删除环境变量(PATH, CYGWIN)环境变量PATH里的c:\cygwin\bin; 还有名叫CYGWIN的变量
--3、在etc/profile中添加如下配置
export ANDROID_NDK=/media/sf_Android/android-ndk-r14b-linux-x86_64/android-ndk-r14b
export PATH=$ANDROID_NDK:$PATH
export ANDROID_SDK=/media/sf_Android/sdk
export PATH=${PATH}:$ANDROID_SDK/tools:$ANDROID_SDK/platform-tools
记得source一下资源,如果执行ndk-build -v 成功,则表示环境配置好了(这一步很重要)
VirtualBox:/# ndk-build -v
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
This program built for x86_64-pc-linux-gnu
-------------------------------------
(2)cygwin安装不上make,一直报make找不到
解决办法同上
如果cygwin官网下载慢的话,我这儿上传了一份exe
坑3、ERROR: Failed to create toolchain
解决方法:ndk版本不对,目前支持r10-r14,替换ndk版本
坑4、下载的ffmpeg源码格式为dos格式
编译时报错:/ffbuild/pkgconfig_generate.sh:行2: $'\r': 未找到命令(类似的错误)
解决方法:转换所有报错文件find . -name "*.sh" | xargs sed -i 's/\r$//g' (转换所有sh脚本)
c文件和h文件等都可能会出现,改变脚本执行就好
坑5、执行./compile-ijk.sh all命令的时候一直通不过
ndk-build: 行 325: 45582 Segmentation fault (核心已转储)$GNUMAKE -f $PROGDIR/build/core/build-local.mk
ndk编译段错误
估计可能是前面ndk配置的环境还是没对造成的,搞了好久,被逼无赖只能换种思路了,前面的几个坑仅供部分技术参考
最后换了Linux编译环境(强力推荐)
Ubuntu16.04+ndkr14b+sdk+git
这环境出奇的顺利,首先按照上面说的第三种方式配置ndk环境后,按照github上的顺序执行就好,没有出现报错,没有报错!!!!!
然后根据修改成功编译出了支持rtsp格式的ijk库(路径ijkplayer\ijkplayer-armv7a\src\main\libs\armeabi-v7a)
最后编译好的so文件,需要的可以自己下载