-
懒人so库
如果有童鞋不想编译,在这里提供一个已经编译好了的so库,可自行去下载使用,https://github.com/tbxyxs/ijkplayer-so
-
环境准备
系统:ubuntu 17.10 sudo apt install linuxbrew-wrapper:安装brew brew install git brew install yasm
-
配置ndk、sdk路径
- 配置android sdk与ndk:(添加以下内容到当前用户home目录中的.bash_profile文件或.profile文件中。
+内容:
//add sdk:改成对应的路径即可 export ANDROID_SDK=D:/Develop/android_sdk_install //add ndk:改成对应的路径即可 export ANDROID_NDK=D:/Develop/android_sdk_install/android-ndk-r14b source ~/.profile //立即生效
- 配置android sdk与ndk:(添加以下内容到当前用户home目录中的.bash_profile文件或.profile文件中。
-
同步ijkplayer源码
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android cd ijkplayer-android git checkout -B latest k0.8.8 //k0.8.8:切换到源码版本分支上,根据版本号填写对应的版本号
-
设置bash
sudo dpkg-reconfigure dash //弹出框后选择否(no),即使用bash。
-
初始化
sudo ./init-android.sh //此时,它会拉取ffmpeg等对应cpu架构的代码。
-
编译ijkplayer支持参数配置:
- 它的主要作用就是配置一些打出来的so库包支持的功能有哪些,如:支持什么协议、支持什么音视频类型,把要支持的参数改为enable启用或disable禁用即可开启/关闭某项功能了。
注:官方默认给了3个已经配置好的脚本,分别是:(也可自行修改里面的配置开关参数) module-default.sh:默认,如果你喜欢更多类型可以用这个; module-lite.sh:如果您更喜欢较小的二进制大小的编解码器/格式(默认情况下). module-lite.hevc.sh:如果您更喜欢较小的二进制大小的编解码器/格式(包括hevc功能). 修改module.sh中的内容 默认可以使用命令进行修改,如举例:修改module.sh的内容与module-default.sh一样,可以直接copy或者命令行处理: $:cd config //进入config目录 $:rm module.sh//删除module.sh脚本文件 $:ln -s module-default.sh module.sh //这里将会copy module-default.sh文件保存为module.sh文件,这就生成了一个新的module.sh脚本文件。
-
添加https的支持:
cd .. //返回源码根目录 ./init-android-openssl.sh //执行该脚本文件,即可增加对https的支持
-
清理缓存
cd android/contrib ./compile-openssl.sh clean //清理openssl,如果不用支持https,则可不用清理 ./compile-ffmpeg.sh clean//清理ffmpeg
-
编译模块openssl
cd android/contrib ./compile-openssl.sh all 注:这有个问题(此问题在ubuntu中不会出现): 1.编译文件文件时,在windows系统下会报:“./compile-openssl.sh:行17: $'\r': 未找到命令”等错误,这是因为windows在执行默认脚本时,当要创建xxx.sh文件脚本时,默认创建出来的文件编码格式为windows格式,需要手动去转一下这些报错的.sh脚本文件,转成unix格式,方可解决,直接用notepad++转下码就行了。
-
编译模块ffmpeg
./compile-ffmpeg.sh all //如果想编译所有版本的so库,就跟all,如果是特定CPU架构就跟cpu架构,比如:./compile-ffmpeg.sh armv7a
-
编译最终的so包:
cd .. //切换到源码根目录 ./compile-ijk.sh all //执行编译so库的脚本;all:支持所有平台,如果只想编译某一cpu架构平台,可替换成对应的平台名称即可:如:./compile-ijk.sh armv7a 注:不加all,默认编译只生成armv7a架构平台;
网友评论