ijkplayer 是一款做视频直播的框架, 基于ffmpeg, 支持 Android 和 iOS!在这里详细的记录下之前在 iOS 中如何集成ijkplayer,以备后用!
第一、下载 ijkplayer
ijkplayer下载地址
下载后解压,解压目录如下:
第二、编译 ijkplayer
说是编译 ijkplayer, 其实是编译 ffmpeg, 在这里我们已经下载好了ijkplayer, 所以 github 上README.md中的Build iOS那一步中有一些步骤是不需要的!下列是步骤:
1.打开终端, cd 到jkplayer-master文件夹中, 也就是下载完解压后的文件夹, 如下图:
2.执行命令行./init-ios.sh, 这一步是去下载 ffmpeg 的, 时间会久一点, 耐心等一下!
3.在第2步中下载完成后, 执行cd ios, 也就是进入到 ios目录中, 如下图:
4.进入 ios 文件夹后, 在终端依次执行./compile-ffmpeg.sh clean和./compile-ffmpeg.sh all命令, 编译 ffmpeg!
第三、打包IJKMediaFramework.framework框架
1.集成 ijkplayer 有两种方法: 一种方法是按照IJKMediaDemo工程中那样, 直接导入工程IJKMediaPlayer.xcodeproj!
2.是把 ijkplayer 打包成framework导入工程中使用!打包步骤如下:
1)打开demo
2)打开后是这样的,如图:
3)并打开设置工程的scheme,具体步骤如图:
4)设置好 scheme 后, 分别选择真机和模拟器按 Command + R 进行编译, 编译完成后, 进入 Finder, 如下图:
5)进入 Finder 后, 可以看到有真机和模拟器两个版本的编译结果, 如下图:
6)下面开始合并真机和模拟器版本的 framework, 注意不要合并错了, 合并的是这个文件, 如下图:
7)打开终端, 进行合并, 命令行具体格式为: :lipo -create 真机版本路径 模拟器版本路径 -output 合并后的文件路径 (注:空格不能省去)!
注意点:
1.常规的需要合并 真机版framework 和模拟器版framework ,需要用到 lipo指令:lipo -create 真机版本路径 模拟器版本路径 -output 合并后的文件路径 (注:空格不能省去)!示例:
路径1:/Users/XXX/Library/Developer/Xcode/DerivedData/IJKMediaPlayer-giggdwtupptvcyalfbtxfhwssrix/Build/Products/Release-iphoneos/IJKMediaFramework.framework/IJKMediaFramework
路径2:/Users/XXX/Library/Developer/Xcode/DerivedData/IJKMediaPlayer-giggdwtupptvcyalfbtxfhwssrix/Build/Products/Release-iphonesimulator/IJKMediaFramework.framework/IJKMediaFramework
合并后的路径及名称:/Users/XXX/Library/Developer/Xcode/DerivedData/IJKMediaPlayer-giggdwtupptvcyalfbtxfhwssrix/Build/IJKMediaFramework
lipo -create /Users/XXX/Library/Developer/Xcode/DerivedData/IJKMediaPlayer-giggdwtupptvcyalfbtxfhwssrix/Build/Products/Release-iphoneos/IJKMediaFramework.framework/IJKMediaFramework /Users/XXX/Library/Developer/Xcode/DerivedData/IJKMediaPlayer-giggdwtupptvcyalfbtxfhwssrix/Build/Products/Release-iphonesimulator/IJKMediaFramework.framework/IJKMediaFramework -output /Users/XXX/Library/Developer/Xcode/DerivedData/IJKMediaPlayer-giggdwtupptvcyalfbtxfhwssrix/Build/IJKMediaFramework
2.报错及注意点
1)指令之间的空格不能省去
2)报错:fatal error: can't map input file
原因是因为 framework 路径格式输入错误,需要将 xxxFramework.framework 改成 xxxFramework.framework/xxxFramework
3)报错:can't move temporary file
原因是因为 合并后的 路径格式输入错误,需要在路径后面加入合并后你起的文件名称 ,/Users/Zhuge_Su/Desktop 改成 /Users/Zhuge_Su/Desktop/xxx.framework (xxx需要自己自定义)
8)合并后如下图:
9)下面很重要, 需要用合并后的IJKMediaFramework把原来的IJKMediaFramework替换掉, 如下图, 希望你能看懂:
10)上图中的1、2两步完成后, 绿色框住的那个IJKMediaFramework.framework文件就是我们需要的框架了, 可以复制出来, 稍后我们需要导入工程使用!
第四、iOS工程中集成ijkplayer
1.新建工程, 导入合并后的IJKMediaFramework.framework以及相关依赖框架以及相关依赖框架,如下图:
2.导入框架后, 在ViewController.m进行测试, 首先导入IJKMediaFramework.h头文件, 编译看有没有错, 如果没有错说明集成成功.