前言
主要介绍我们如何通过git下载ijkPlayer SDK的源码。
当我们代码配置下载完毕后,我们可以学习如何自己通过源码编译aar文件,编译so文件等。
循序渐进的了解ijkPlayer吧
1. 获取ijkPlayer源码
在gitHub上其实有详细说明,我这边再结合自己的使用情况,进行一个说明。
采用下面的方式下载的前提条件是你本地的Git工具已经配置相关密钥了。可以从GitHub上拉取代码和推送代码了。
1.1 git命令模式
Github上 列出的就是通过git 命令行的形式下载源码
第一步,获取完整的ijkplayer 源码: git clone https://github.com/Bilibili/ijkplayer.git
通过这一步我们下载的将会是ios和Android两个的源码都下载了。目录结构就和我们在GitHub上看到的是一样的。
然后,我们需要切换分支。我们默认下载的就是master
分支的代码。但是并不是稳定版本,
ijkPlayer 在发布的每个版本之后,都会添加一个标签。我们通过git命令切换当前仓库到指定标签。
第二步,切换到指定的标签分支:git checkout -B latest k0.8.8
例如上面的切换到k0.8.8
分支,因为当前最新版本是k0.8.8
这个时候,我们本地的代码就是某个稳定分支的版本代码了。我们可以根据自己的实际需求在该版本中进行重新构造jar和so文件。
那么ijkPlayer 有多个标签(Tags)呢?怎么查询呢?
很简单,我们在GitHub上可以看到所有的标签版本
当我们下载完毕代码了后,我们就可以任意发挥了。包括修改源码重新打包等等。
1.2 使用TortoiseGit 等工具下载源码。
我们如果是使用GUI工具界面,进行下载的话。仍然是上面的链接
执行仓库克隆操作,将代码下载完毕。然后通过右键菜单,选择 : 切换/检出
功能
然后选择标签(Tags),选择要切换到的指定标签。
下面的选项会自动基于该标签创建一个本地分支。我们点击确认就可以了。
就可以将代码切换到指定的标签分支了。
获取源码的方式就到这里了。
2. 获取FFmpeg 依赖库
ijkPlayer SDK 针对视频播放的编解码是通过FFmpeg 库来实现的。我们在上面的步骤中只是获取的ijkPlayer的源码,而FFmpeg相关库没有下载。我们只有下载了该库才能执行后面的so等文件的编译。
2.1 windows 平台下
我们在下载的源码中,启动init-android.sh 文件就可以自动进行下载了。
方法很简单: 双击使用Git Bash 执行该文件,就会自动开始下载相关FFmpeg的库了。
我们通过文档工具打开这.sh文件也能直观的看到。这个就是一个脚本工具,封装了ffmpeg的下载
执行下载完毕后,Git Bash会自动关闭。数据存储路径在android/contrib
文件夹下面。
如果没有这几个库,我们就无法进行编译相关平台的so文件了。这个步骤很重要。
2.2 linux 平台下
如果是linux平台下,直接执行:./init-android.sh
这个文件进行下载就可以了。
下载完毕后,一样是在contrib文件夹下多出部分的FFmpeg的各种cpu型号库。
3. 编译ijkPlayer SDK
我们如果没有配置要进行修改,可以直接执行以下命令
cd android/contrib
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all
cd ..
./compile-ijk.sh all
最终是通过compile-ijk.sh 进行脚本编译,实现so等各种文件的编译了。(需要前提条件是本地有ndk编译环境。并且配置在了环境变量中,否则脚本找不到ndk无法进行编译)
3.1 Android Studio进行编译
也可以直接使用AS进行编译。
第一步:将 android/ijkplayer
通过 import
导入创建一个Android Studio项目
请注意你的Project的build.gradle 文件中是否有下面的配置
ext {
compileSdkVersion = 23 // 这个是你本地的Android SDK 的版本,你可以自定义
buildToolsVersion = "23.0.0" // 这个是本地的 Android Tools工具版本,你也可以自定义
targetSdkVersion = 23 // 定义最佳编译版本,这个也是基于我们本地的Android SDK版本,自定义
}
如果不配置就会出现下面的错误了。
第二步: 我们需要安装LLDB,NDK,CMake 等插件。
第四步: 执行gradle 编译就可以了。
我们就可以根据需要编译你想编译的版本了。
本篇内容就到这里了。请期待我之后的关于ijkPlayer SDK的使用介绍吧。
到这里,我们编译的其实和ijkPlayer 官方提供的maven仓库没有区别。只是实现了一下本地自己打包而已。
评论区