编译ijkplayer ffmpeg过程所遇到的坑

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 慢我使用了网上找的的方法(但是好像没什么用~~~速度快了一点<~~>)

  • Windows上的hosts文件路径在
  • C:\Windows\System32\drivers\etc\hosts
  • 199.232.5.194 github.global.ssl.fastly.Net
  • 140.82.114.4 github.com
  • 保存后刷新DNS  ipconfig /flushdns

 

  • linux上的hosts文件路径 etc/hosts
  • 刷新DNS   sudo /etc/init.d/networking restart

还有一种是使用代理的方式下载(自行百度吧,我没有用过)

中途采用过直接下载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文件,需要的可以自己下载

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值