AndroidiOS ijkplayer编译步骤及相关问题解决
Posted 安卓开发-顺
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AndroidiOS ijkplayer编译步骤及相关问题解决相关的知识,希望对你有一定的参考价值。
一、ios
基于B站开源代码编译(https://github.com/bilibili/ijkplayer)
- :准备一台Mac电脑,本文使用macOS 12.1
- :安装XCode开发工具,本文使用xcode 13.4.1
- :安装 homebrew、git和yasm软件
- :打开终端运行窗口,进入一个自己的开发文件夹,执行:git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios
- :执行命令:cd ijkplayer-ios
- :执行命令:git checkout -B latest k0.8.8 本文是基于k0.8.8分支
- :执行命令:./init-ios.sh (这一步会完成一些初始化工作,并去GitHub拉取FFmpeg代码)
- 如果操作文件时没有权限,请执行 chmod 777 init-ios.sh 来修改为可读可写权限, 下面遇到类似错误,同样方式处理即可
-
:执行命令:./init-ios-openssl.sh 初始化https相关内容
- :执行命令:cd ios (进入iOS文件夹)
- :执行命令:./compile-openssl.sh all 编译https相关内容
- :执行命令:./compile-ffmpeg.sh clean 不必每次都clean 除非有ffmpeg相关修改
- :执行命令:./compile-ffmpeg.sh all 编译ffmpeg库,此步骤十分重要,ijkplayer就是基于ffmpeg来封装
- 关于遇到module.sh
、
module-lite.sh 命令行找不到等问题的解决方案- 直接来到和ios平级的config文件夹下,执行rm module.sh 删除module.sh
- 然后回到根目录下执行 ./init-config.sh即可(此步骤会自动拷贝module-lite.sh文件内容到module.sh)
- 关于遇到:error:unknown derective .arch armv7-a的报错的解决方案
- 方案一、删除armv7(32位)相关架构的编译代码,iPhone5s以上的手机都是64位的cup架构了,应用商店也不在支持armv7(32),因此支持删除也是可以的,具体实现如下
-
修改 ios文件夹下compile-ffmpeg.sh
第24行 改为: FF_ALL_ARCHS_IOS8_SDK="arm64 i386 x86_64"
第120行 改为: if [ "FFTARGET"="armv7s"−o" FF_TARGET" = "arm64" ]; then
第159行 改为: echo " compile-ffmpeg.sh arm64|i386|x86_64"
-
- 方案二、兼容armv7
- 到ios/tools文件夹下,修改do-compile-ffmpeg.sh文件
- 在187行(行数可能会变化,找这行代码为准 :FF_XCRUN_CC="xcrun -sdk $FF_XCRUN_SDK clang")下面添加如下内容:
echo "----- zhangshun modify for armv7 ---------- begin"
if [ "$FF_ARCH" = "arm64" ]
then
FF_AS="gas-preprocessor.pl -arch aarch64 -- $FF_XCRUN_CC"
else
FF_AS="gas-preprocessor.pl -- $FF_XCRUN_CC"
fi
echo "----- zhangshun modify for armv7 ---------- end"
- 方案一、删除armv7(32位)相关架构的编译代码,iPhone5s以上的手机都是64位的cup架构了,应用商店也不在支持armv7(32),因此支持删除也是可以的,具体实现如下
- 关于缓存问题的解决方案:
- 执行./compile-ffmpeg.sh clean 清除之前构建内容即可
- 关于遇到module.sh
- :编译完成后 用xcode 打开ios/IJKMediaDemo/IJKMediaDemo.xcoderoj运行看效果
- :导出库文件,放到其他项目中使用
二、android
基于B站开源代码编译(https://github.com/bilibili/ijkplayer)
由于Window下直接编译坑太多,建议安装Ubuntu系统进行编译
- :安装Ubuntu系统,并进入
- :下载Android NDK r10e(官方建议r10e的版本)注意是Linux版本
- :配置NDK环境变量,注意在Ubuntu下配置
- :安装 git 、AndroidStudio 并配置SDK环境变量 注意是在Ubuntu下面操作
- :打开终端运行窗口,进入一个自己的开发文件夹,执行:git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android
- :执行命令:cd ijkplayer-android
- :执行命令:git checkout -B latest k0.8.8 本文是基于k0.8.8分支
- :执行命令:./init-android.sh (这一步会完成一些初始化工作,并去GitHub拉取FFmpeg代码)
- 如果操作文件时没有权限,请执行 chmod 777 init-android.sh 来修改为可读可写权限, 下面遇到类似错误,同样方式处理即可
-
:执行命令:./init-android-openssl.sh 初始化https相关内容
- :执行命令:cd android/contrib
- :执行命令:./compile-openssl.sh armv7a 编译https相关内容,指定了armv7a,也可以写all 编译所有的cpu架构
- :执行命令:./compile-ffmpeg.sh clean 不必每次都clean 除非有ffmpeg相关修改
- :执行命令:./compile-ffmpeg.sh armv7a 编译ffmpeg库,此步骤十分重要,ijkplayer就是基于ffmpeg来封装
- 关于遇到module.sh
、
module-lite.sh 命令行找不到等问题的解决方案- 直接来到和android平级的config文件夹下,执行rm module.sh 删除module.sh
- 然后回到根目录下执行 ./init-config.sh即可(此步骤会自动拷贝module-lite.sh文件内容到module.sh)
- 关于缓存问题的解决方案:
- 执行./compile-ffmpeg.sh clean 清除之前构建内容即可
- 关于遇到module.sh
- :执行命令 cd.. 回到 android目录下
- :执行./compile-ijk.sh armv7a 也可以选择all 根据需求来定
- :拷贝编译生成的so进行使用即可
- android--ijkplayer--ijkplayer-armv7a--src--main--libs
以上是关于AndroidiOS ijkplayer编译步骤及相关问题解决的主要内容,如果未能解决你的问题,请参考以下文章
AndroidiOS ijkplayer编译步骤及相关问题解决
iOS ijkplayer 硬解H265(hevc)4k视频问题解决
iOS ijkplayer 硬解H265(hevc)4k视频问题解决
iOS ijkplayer 硬解H265(hevc)4k视频问题解决