准备工具
- homebrew
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" - git
brew install git - yasm
brew install yasm
获取源代码
#在桌面创建一个ijkplayer的文件夹
cd ~/Desktop
mkdir ijkplayer
cd ijkplayer
#clone
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios
# 进入源码目录
cd ijkplayer-ios
#切换成最新的分支(当前为k0.8.8,许久未更新了)
git checkout -B latest k0.8.8配置编解码器支持
- module-default.sh
- module-lite-hevc.sh
- module-lite.sh
根据自己的需要进行配置,本文选用最多的编解码器支持module-default.sh
cd config
#移除 module.sh
rm module.sh
#建立软链接,可自行根据需要进行修改
ln -s module-default.sh module.sh
cd ..
cd ios
sh compile-ffmpeg.sh clean获取FFmpeg以及初始化
cd ..
#注意点:如果需要支持armv7s架构,则修改init-ios.sh中FF_ALL_ARCHS=$FF_ALL_ARCHS_IOS7_SDK
./init-ios.sh
添加https支持
./init-ios-openssl.sh
cd ios
# 在模块文件中添加一行配置 以启用 openssl 组件
echo 'export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-openssl"' >> ../config/module.sh(也可以自行添加)
./compile-ffmpeg.sh clean编译
#编译openssl
./compile-openssl.sh all
#编译ffmpeg
./compile-ffmpeg.sh all如果出现如下错误
./libavutil/arm/asm.S:50:9: error: unknown directive
.arch armv7-a
^如果你的应用不需要支持armv7架构,则可以在compile-ffmpeg.sh中删除,修改为
FF_ALL_ARCHS_IOS8_SDK="arm64 i386 x86_64"如果需要armv7以及armv7s等架构支持,则需要下载旧版本的Xcode,选择Xcode9.1进行下载,完成后再终端执行sudo xcode-select -s /Applications/Xcode9.1.app/Contents/Developer
然后修改compile-ffmpeg.sh脚本
FF_ALL_ARCHS=$FF_ALL_ARCHS_IOS7_SDK
然后执行./compile-ffmpeg.sh all
打包framework
打开IJKMediaPlayer.xcodeproj,如果需要https支持,则将ios/build/universal目录下生成的libcrypto.a以及libssl.a拖入Target "IJKMediaFramework", 然后在Build Settings里添加User-Defined
BITCODE_GENERATION_MODE=bitcode,然后进行编译生成framework
备注
之前怕openssl不支持bitcode导致ijkplayer无法支持bitcode,特意找了个支持bitcode的ssl
查看framework是否支持bitcode的方式
otool -l IJKMediaFramework.framework/IJKMediaFramework
#然后在终端搜索bitcode,如果有结果且size不为0x0000000000000001,则为支持
#如果framework已合并。需使用下面的方法
otool -arch arm64 -l IJKMediaFramework.framework/IJKMediaFramework查看支持的架构
lipo -info IJKMediaFramework.framework/IJKMediaFramework参考资料
ijkplayer 的编译、打包 framework 和 https 支持