1.系统配置
2.编译流程参考
https://www.jianshu.com/p/9a69af13835e
https://www.jianshu.com/p/65fb80dff4d6
3.编译过程遇到问题
编译过程是曲折的,每个人遇到的问题也不尽相同,分享的力量是强大的,整合CSDN上各位朋友的帖子下,我也完成了自己的编译,感谢前辈们的分享!
-
首先就遇到了执行init-ios.sh慢‘卡死的问题 脚本执行的主要就是从 Github 下载 ffmpeg 源码,ffmpeg 源码大,国内下载速度又慢导致。解决办法:把ffmpeg的github仓库导入到码云。具体方式:码云上建立仓–》导入已有仓库-〉填写Github链接,等待完成。
这些前辈们已经完成我们只需要将init-ios.sh做如下修改:#注释掉的是原来的地址 #IJK_FFMPEG_UPSTREAM=https://github.com/Bilibili/FFmpeg.git IJK_FFMPEG_UPSTREAM=https://gitee.com/yuazhen/FFmpeg.git #IJK_FFMPEG_FORK=https://github.com/Bilibili/FFmpeg.git IJK_FFMPEG_FORK=https://gitee.com/yuazhen/FFmpeg.git #IJK_GASP_UPSTREAM=https://github.com/Bilibili/gas-preprocessor.git IJK_GASP_UPSTREAM=https://gitee.com/yuazhen/gas-preprocessor.git
-
/libavutil/arm/asm.S:50:9: error: unknown directive编译过程中报此错误,网上大部分采用方法一其他还可以采用其他方式:
#具体如下:
1.在compile-ffmpeg.sh脚本中删除armv7, 修改如下:(无Armv7库)
FF_ALL_ARCHS_IOS8_SDK=“arm64 i386 x86_64”
2.即禁用汇编,将tools/do-compile-ffmpeg.sh文件里的armv7架构的情况,改为:
elif [ “ F F A R C H " = " a r m v 7 " ] ; t h e n F F B U I L D N A M E = " f f m p e g − a r m v 7 " F F B U I L D N A M E O P E N S S L = o p e n s s l − a r m v 7 F F X C R U N O S V E R S I O N = " − m i p h o n e o s − v e r s i o n − m i n = 6.0 " F F X C O D E B I T C O D E = " − f e m b e d − b i t c o d e " F F M P E G C F G F L A G S = " FF_ARCH" = "armv7" ]; then FF_BUILD_NAME="ffmpeg-armv7" FF_BUILD_NAME_OPENSSL=openssl-armv7 FF_XCRUN_OSVERSION="-miphoneos-version-min=6.0" FF_XCODE_BITCODE="-fembed-bitcode" FFMPEG_CFG_FLAGS=" FFARCH"="armv7"];thenFFBUILDNAME="ffmpeg−armv7"FFBUILDNAMEOPENSSL=openssl−armv7FFXCRUNOSVERSION="−miphoneos−version−min=6.0"FFXCODEBITCODE="−fembed−bitcode"FFMPEGCFGFLAGS="FFMPEG_CFG_FLAGS --enable-pic”
(有armv7架构的库) -
其他无特殊说明根据README操作即可
4.集成IJKPlayerFramework
- 打开ios下IJKMediaPlayer,打开工程
- 随便选择一个device,commond +b编译生成一个模拟器 版本
选择Generic IOS Device commond +b编译生成一个真机版本 - 合并,https://www.jianshu.com/p/65fb80dff4d6,采用此链接中的方法执行lipo时可以把用真机版本与模拟版本拷贝到桌面等浅层次文件中再操作,避免路径太长书写不便
执行: lipo -create 真机framework路径 模拟器framework路径 -output 合并的文件路径 - 集成IJKMediaDemo中
IJKMediaFramework.framework 包直接拖入到使用的项目中 ,然后根据github上的提示,完成其他依赖库的导入。
感谢贴友们的分享!