编译ijkplayer最详尽的编译过程教程以及编译过程中的各种坑

编译ijkplayer最详尽的编译过程教程以及编译过程中的各种坑,第1张

概述一.摘要从开始接触ijkplayer,到全流程编译ijkplayer真的是各种的惨痛教训和坑,经历了3天才算成功.所以把这一路的填坑过程全部记录下来,一方面,下次需要编译的时候直接使用.另一方面,分享给更多的朋友们.让朋友能够快速的编译.二.环境要求以及注意事项这是我的环境和 一. 摘要

从开始接触ijkplayer,到全流程编译ijkplayer真的是各种的惨痛教训和坑,经历了3天才算成功.
所以把这一路的填坑过程全部记录下来,一方面,下次需要编译的时候直接使用. 另一方面,分享给更多的朋友们.让朋友能够快速的编译.

二. 环境要求以及注意事项

这是我的环境和建议,建议大家可以好好参考,特别是NDK版本
另一方面,我已经将我验证过的所有文件放在百度云,供大家快速下载

虚拟机: VMware Workstation 16 Pro

建议使用比较新的版本,原因:①我最初使用的是VMware 12 安装虚拟机的时候总是显示我电脑没有虚拟设备,经过各种踩坑和设置宿主机的cpu.最终的原因是因为VMware Workstations 版本太低导致

Ubuntu 20.04xxx
我的镜像文件是ubuntu-20.04.1-desktop-amd64.iso 这个镜像文件选择倒不重要自己随意就好.
PS: 我安装了2个虚拟机一个desktopserver 这个无所谓Ubuntu的安装过程要格外注意 , 安装的时候吧宿主机断网. 原因: ①.安装Ubuntu的时候,有一个过程就是安装更新,这一步会安装特别长的时间,有可能一整天都安装不好.断网就是避免无底线的更新. 官网安装速度很快10分钟可以解决

特别注意:
在使用VMware安装虚拟机的分配磁盘大小时,一定要分配大一点. 至少40G+ 我选择了100G
原因: 我第一安装vm的时候就是用了默认的20G 安装完基本环境 sdk , ndk , 下载了代码,准备编译的时候,提示内存空间不足… 然后各种折腾扩容 , 后来由于电脑出了问题 ,也不想折腾扩容,就直接重新创建 , 分配了100G


NDK选择 androID-ndk-r12b-linux-x86_64.zip
这个版本的选择非常重要 , 直接影响成败. 官网推荐的是androID-ndk-r13b-linux-x86_64.zip但是我实际检测这个NDK不行.经过各种了解和群里大佬指导,我使用的是androID-ndk-r12b-linux-x86_64.zip我听大佬说, 使用androID-ndk-r13b-linux-x86_64.zip需要修改脚本文件. 我估计也是.因为最后编译时总是报一个touch: 无法创建 '/home/xxxxxxijkplayer/androID/contrib/build/ffmpeg-armv7a/toolchain/touch': 没有那个文件或目录,我猜测跟一下执行脚本,然后做一个文件夹是否存在的判断,使用mkdir -p xxx创建文件夹.但是具体的我没有测试,没时间折腾了.
SDK选择 androID-sdk_r24.4.1-linux.tgz
SDK的过程倒还是比较顺利,但是下载的东西太多了.等了很久,我使用的是androID-sdk_r24.4.1-linux.tgz为了避免在linux下下载速度过慢, 我已经全部打包放在百度网盘了.
其他软件

相关软件: sudo apt-get update,git , vim,openssh-server,
其他具体的命令, 需要什么的时候就直接安装.

相关工具
WinSCP : 安装包都是我再我宿主机上,所以通过此工具上传至Ubuntu (这个可以自由选择)MobaXterm: shell工具
三. 软件安装与环境搭建1. 初始化系统, 更新系统
> sudo apt-get update
2. 安装vim,openssh-server
# 安装vimapt install vim# 安装 net-toolsapt install net-tools# 安装openssh-serverapt install openssh-server# 启动sshsudo service ssh start# 安装gitsudo apt install git# 安装之后,使用命令进行最初的设置,然后进行配置信息的查看:git config --global user.name "your name" git config --global user.email "youre mail" git config --List
3. 安装JDK配置其环境变量

安装jdk , ndk ,sdk 这些安装包我全是通过WinSCP工具从宿主机传过来的.当然也可以直接通过wget命令下载

将压缩包jdk-8u161-linux-x64.tar.gz复制到安装目录
我这儿是/usr/local/java

# 复制压缩包到指定目录> cp jdk-8u161-linux-x64.tar.gz /usr/local/java# 解压压缩包> tar -zxvf jdk-8u161-linux-x64.tar.gz# 配置环境变量> vim /etc/profile# 添加以下环境变量# javaexport JAVA_HOME=/usr/local/java/jdk1.8.0_161export JRE_HOME=${JAVA_HOME}/jreexport CLAsspATH=:${JAVA_HOME}/lib:${JRE_HOME}/libexport PATH=${JAVA_HOME}/bin:$PATH# 生效环境变量> source /etc/profile# 校验是否成功> java -versionjava version "1.8.0_161"Java(TM) SE Runtime Environment (build 1.8.0_161-b12)Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)
4. 配置NDK的环境变量

这个使用了wget命令下载

# 下载安装包> wget http://dl.Google.com/androID/androID-sdk_r24.2-linux.tgz# 解压> tar -xvf androID-sdk_r24.2-linux.tgz# 进入该目录> cd androID-sdk-linux# 执行命令> tools/androID update sdk --no-ui# 至于为什么要执行此命令 , 在`SDK Readme.txt`中已经写明# 配置环境变量> vim /etc/profile# 添加以下环境变量# javaexport ANDROID_SDK=/usr/local/java/androID-sdk-linuxexport PATH=$ANDROID_SDK:$PATH# 生效环境变量> source /etc/profile


注意:

执行tools/androID update sdk --no-ui命令后,会一次下载androID的各种API , 耗时很长,如果不想等待,可以只写及下载我提供的安装包
5. 安装ndk
# 解压 androID-ndk-r12b-linux-x86_64.zip> unzip androID-ndk-r12b-linux-x86_64.zip# 配置环境变量> vim /etc/profile# 添加以下环境变量# set ndk environmentexport ANDROID_NDK=/usr/local/java/androID-ndk-r12bexport PATH=$ANDROID_NDK:$PATH# 生效环境变量> source /etc/profile# 校验是否生效> ndk-build --versionGNU Make 4.2.1为 x86_64-pc-linux-gnu 编译copyright (C) 1988-2016 Free Software Foundation, Inc.许可证:GPLv3+:GNU 通用公共许可证第 3 版或更新版本<http://gnu.org/licenses/gpl.HTML>。本软件是自由软件:您可以自由修改和重新发布它。在法律允许的范围内没有其他保证。

至此已经安装好基础的环境变量,
整体性查看下环境变量:

四. 编译ijkplayer

说明:
由于github 非常慢 , 再次推荐2中方案

使用我提供的百度网盘, 缺点: 不会实时更新.使用gitee的急速下载仓库: https://gitee.com/mirrors/ijkplayer.gitijkplayer所需要的的ffmpeg 在gitee中没有备份,所以自己考虑,要么在github上下载
1. 克隆所ijkplayer仓库

使用命令git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-androID拷贝ijkplayer到当前目录。

执行命令cd ijkplayer-androID git checkout -B latest k0.8.4


初始化需要进行编译的代码,使用命令./init-androID.sh。 内容较多,我贴多一些初始化的过程图片:

2. 进入ijkplayer阶段2.1 编译ffmpeg

执行以下命令:cd androID/contrib ./compile-ffmepg.sh clean ./compile-ffmpeg.sh all


2.2 编译ijkplayer
# 执行以下命令cd .. ./compile-ijk.sh


五. 总结问题1. 由于github下载速度较慢的问题没有其他办法 , 要么自己搭建梯子 , 要么下载gitee上的 .另外就是使用我提供的(我下载了好几个小时,没有搭建梯子…)由于ffmpeg也是已经下载好的 , 所以在执行init-androID.sh的时候要进行修改:①. 注释掉31行,拉取方从github拉取代码(看下面截图) ②. 将已下载好的目录,复制到 /extra 并且要注意ffmpeg的大小写(具体为什么要复制到/extra目录,请查看执行脚本逻辑)


2. 因NDK版本问题导致的异常

我首次使用的是androID-ndk-r13b-linux-x86_64.zip, 为什么? 因为这是官网推荐的.但是我使用此版本会报错

之后经过群好友,指点使用了androID-ndk-r12b-linux-x86_64.zip圆满解决

总结:

这一路总来,折腾的太久了,导致睡觉都睡不好,做梦都在想着,哪儿出问题了.从安装虚拟机开始就各种的坑.安装虚拟机的时候,分配硬盘空间太小了.导致要扩容. 扩容就要折腾好久.而且当时环境也不太对,所以宁愿重装系统.安装虚拟机至少装了4~5此, 因为每次都卡在最后的更新 *** 作 , 从上午开始安装,到下午还没装好 . 最后各种百度,就直接断网处理 . 断网后,安装15–20分钟就搞定了然后就是,bilibili的各种仓库代码下载的问题 , 1kb/s , 恶心的一批 . 某个早上睡不着,然后就起床下载,某个瞬间下载速度特别快达到5MB/s 所以把ffmpeg ,ijkplayer 全部都下载了 . 使用自己下载的库,就意味着要逐一的修改执行脚本 . 后来权衡了下 , 只有ffmpeg仓库比较大 ,所以执行改了init-androID.sh的代码,修改也很简单,只是注释了拉取库而已,其他的那些库都比较小,还能忍受这也是最大的一个坑 , 使用官方推荐的NDK r13b 各种的报错 , 解决 . 原本打算跟一遍编译脚本然后逐一修改 . 后来问了下群友 , 有个大佬说是ndk版本问题 , 换了个ndk直接就解决了.

综上, 不懈的坚持,总算是圆满的解决了,整个流程也非常清楚 , 包括如何编译,编译的逻辑.都全部跟了一遍. 今天总算可以睡个好觉了. 哈哈

2020年11月23日23:08:18

总结

以上是内存溢出为你收集整理的编译ijkplayer最详尽的编译过程教程以及编译过程中的各种坑全部内容,希望文章能够帮你解决编译ijkplayer最详尽的编译过程教程以及编译过程中的各种坑所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1057280.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存