ijkplayer iOS项目集成记录

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

效果一览:

ijkplayer iOS项目集成记录_第1张图片
克隆ijkplayer源码

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


ijkplayer iOS项目集成记录_第2张图片
ffmpeg下载完成


5.添加https支持

//获取openssl并初始化

./init-ios-openssl.sh


ijkplayer iOS项目集成记录_第3张图片
openssl相关组件下载完成

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


ijkplayer iOS项目集成记录_第4张图片
清理完成

//编译openssl,如果不需要支持HTTPS可以跳过

./compile-openssl.sh all

操作完成后会生成这两个库

ijkplayer iOS项目集成记录_第5张图片
生成两个库

//编译ffmpeg,生成通用库

./compile-ffmpeg.sh all

此时如果出现错误提示


错误提示

感谢https://www.jianshu.com/p/9743a68c2939提供的解决方法:

修改compile-ffmpeg.sh脚本文件

ijkplayer iOS项目集成记录_第6张图片
修改该文件

删除armv7,修改如下:

FF_ALL_ARCHS_IOS8_SDK="arm64 i386 x86_64"

删除后记得保存修改,再执行

./compile-ffmpeg.sh all

又经过漫长的等待,正确的编译结果

ijkplayer iOS项目集成记录_第7张图片
正确编译结果

四、打包framework

打开IJKMediaPlayer这个工程


ijkplayer iOS项目集成记录_第8张图片
打开该工程

选择IJKMediaFramework,推荐使用这个,大部分基于ijkplayer的框架都是使用IJKMediaFramework,即使要支持HTTPS也推荐使用后者,按照上面步骤添加openssl支持就可以


ijkplayer iOS项目集成记录_第9张图片

选择Release,点击close

ijkplayer iOS项目集成记录_第10张图片

添加依赖库

ijkplayer iOS项目集成记录_第11张图片
ijkplayer iOS项目集成记录_第12张图片

此时编译是会报错,因为之前步骤删除了compile-ffmpeg.sh中的armv7,把这句注释即可

ijkplayer iOS项目集成记录_第13张图片

分别以模拟器和真机编译


编译完成后选择


ijkplayer iOS项目集成记录_第14张图片

可以在目录中看到模拟器和真机两个版本的编译结果:


ijkplayer iOS项目集成记录_第15张图片

进入到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


ijkplayer iOS项目集成记录_第16张图片


提供集成好的库链接: https://pan.baidu.com/s/1TK9xnCsAnFBZkfZFMGWLhA 密码: mb58

你可能感兴趣的:(ijkplayer iOS项目集成记录)