ijkplayer下载地址:https://github.com/Bilibili/ijkplayer
一、准备工作
在终端安装homebrew
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
homebrew安装完成后分别安装git
brew install git
和yasm
brew install yasm
二、下载ijkplayer源码
1.先在桌面创建一个空文件夹存放下载的ijkplayer源码
//进入桌面目录
cd ./Desktop
//创建文件夹
mkdir ijk_download
//进入文件夹
cd ./ijk_download
2.将ijkplayer源码克隆到本地文件夹中
//克隆源码需要一段时间……
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios
//等下载完成后,进入ijkplayer_ios目录下
cd ijkplayer-ios
//切换到新分支
git checkout -B latest k0.8.8
效果一览:
3.选择编解码器格式
默认是最少支持,其他配置有如下
module-default.sh 更多的编解码器、格式
module-lite-hevc.sh 较少的编解码器、格式(包括hevc)
module-lite.sh 较少的编解码器、格式(默认)
//进入config
cd config
//删除当前module.sh文件
rm module.sh
//根据需要替换为 module-default.sh , module-lite-hevc.sh , module-lite.sh
//创建软链接module.sh指向module-default.sh
ln -s module-default.sh module.sh
cd ..
cd ios
sh compile-ffmpeg.sh clean
4.执行init-ios.sh脚本文件下载FFmpeg源码
cd ..
./init-ios.sh
又是一段漫长的下载等待……
下载完成之后在目录中已经生成FFmpeg
5.添加https支持
//获取openssl并初始化
./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的时候会自动创建刚刚删除的文件,避免文件名冲突
./compile-ffmpeg.sh clean
三、编译
//进入ios目录
cd ios
./compile-ffmpeg.sh clean
//编译openssl,如果不需要支持HTTPS可以跳过
./compile-openssl.sh all
操作完成后会生成这两个库
//编译ffmpeg,生成通用库
./compile-ffmpeg.sh all
此时如果出现错误提示
感谢https://www.jianshu.com/p/9743a68c2939提供的解决方法:
修改compile-ffmpeg.sh脚本文件
删除armv7,修改如下:
FF_ALL_ARCHS_IOS8_SDK="arm64 i386 x86_64"
删除后记得保存修改,再执行
./compile-ffmpeg.sh all
又经过漫长的等待,正确的编译结果
四、打包framework
打开IJKMediaPlayer这个工程
选择IJKMediaFramework,推荐使用这个,大部分基于ijkplayer的框架都是使用IJKMediaFramework,即使要支持HTTPS也推荐使用后者,按照上面步骤添加openssl支持就可以
选择Release,点击close
添加依赖库
此时编译是会报错,因为之前步骤删除了compile-ffmpeg.sh中的armv7,把这句注释即可
分别以模拟器和真机编译
编译完成后选择
可以在目录中看到模拟器和真机两个版本的编译结果:
进入到Products目录下
//合并
//lipo -create 真机framework路径 模拟器framework路径 -output 合并的文件路径
lipo -create /Users/zhurui/Library/Developer/Xcode/DerivedData/IJKMediaPlayer-dhbywfajroxzoxbigxvuxvlzqrbw/Build/Products/Release-iphoneos/IJKMediaFramework.framework/IJKMediaFramework /Users/zhurui/Library/Developer/Xcode/DerivedData/IJKMediaPlayer-dhbywfajroxzoxbigxvuxvlzqrbw/Build/Products/Release-iphonesimulator/IJKMediaFramework.framework/IJKMediaFramework -output IJKMediaFramework
将生成的IJKMediaFramework文件替换掉真机目录下的IJKMediaFramework,这个替换过的文件就是最终的通用framework
提供集成好的库链接: https://pan.baidu.com/s/1TK9xnCsAnFBZkfZFMGWLhA 密码: mb58