首先,你可以直接找到一个现成的framework包拖进项目中使用,当然你需要在工程中添加framework必要的库文件。见文章底部
这里提供一个framework包下载地址:
链接: https://pan.baidu.com/s/1o7KntW2 密码: 99t8
本文主要介绍IJKMediaFramework的制作过程。
IJKMediaFramework的github的地址: https://github.com/Bilibili/ijkplayer
不管使用什么方法,将文件下载到本地。
readme中提供的下载方法是利用终端git命令:
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios
cd ijkplayer-ios
git checkout -B latest k0.7.8.1
我是用source tree 直接拉取的;
下载完成之后:
1.终端中打开下载下来的ijk文件夹
cd ijkplayer(下载的项目所在路径)
2.运行init-ios.sh脚本(过程为下载ffmpeg)
./init-ios.sh
tip:1-2步可以直接在项目中找到init-ios.sh文件拖进终端后回车;
3.打开IJKPlayer文件夹下ios文件夹
cd ios(下载的项目下ios文件夹所在路径)
4.运行脚本 clean
./compile-ffmpeg.sh clean
5.运行脚本 all 编译 ffmpeg
./compile-ffmpeg.sh all
tip:3-5步可以直接找到文件拖进终端 执行clean和all 两个操作。
compile-ffmpeg.sh路径 clean 回车
compile-ffmpeg.sh路径 all 回车
打开IJKMediaPlayer工程
点击最上面的IJKMediaFramework-点击Edit-Scheme.
将run的Build Configuration方式改为release
设置framework下需要暴露的头文件。(没有特殊需求一般不需要修改)(免去此步,直接cmd+b编译)
分别在真机和模拟器环境下编译cmd+b
合并framework
需要注意的是,framework不能直接合并
需要合并的文件为IJKMediaFramework.framework下的IJKMediaFramework文件。
lipo -create "真机版本的IJKMediaFramework路径" "模拟器版本的IJKMediaFramework的路径" -output "合并后的文件路径"
Tip:如果在终端中输入上述命令行后遇到如下错误:
crun: error: active developer path (“/Applications/Xcode 2.app/Contents/Developer”) does not exist, use xcode-select --switch path/to/Xcode.app to specify the Xcode that you wish to use for command line developer tools (or see man xcode-select)
可以输入
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
最后用合并完成的IJKMediaFramework替换掉真机生成的.framework文件中的IJKMediaFramework;
此时真机中的IJKMediaFramework.framework 就是我们需要的framework
IJKMediaFramework.framework依赖的库文件
# AudioToolbox.framework
# AVFoundation.framework
# CoreGraphics.framework
# CoreMedia.framework
# CoreVideo.framework
# libbz2.tbd
# libz.tbd
# MediaPlayer.framework
# MobileCoreServices.framework
# OpenGLES.framework
# QuartzCore.framework
# UIKit.framework
# VideoToolbox.framework
系统的framework库可以忽略,xcode会自动链接。tbd的必须添加
如果编译错误尝试添加libstdc++.tbd