最近因项目需要了解和学习了关于直播的播放器集成,首先了解了ijkplayer的集成,ijkplayer 是一款做视频直播的框架, 基于ffmpeg, 支持 Android 和 iOS, 网上也有很多集成说明下面我记录一下我是如何在 iOS 中集成ijkplayer的,以便以后保存学习:
一、 下载ijkplayer
ijkplayer的下载地址:https://github.com/Bilibili/ijkplayer
下载解压成文件夹
二、编译ijkplayer
1、 用终端编译ijkplayer,其实也就是编译FFmpeg,打开终端cd进入ijkplayer-master文件夹
2、在此文件夹下进行操作,执行命令行 ./init-ios.sh
, 这一步是去下载 ffmpeg 的, 时间会久一点, 耐心等一下
3、下载完成以后,cd 到 ios 目录中cd ios
4、然后依次执行./compile-ffmpeg.sh clean
和 ./compile-ffmpeg.sh all
命令,编译FFmpeg,过程有点长,耐心等待,
执行./compile-ffmpeg.sh all
命令时候可能出现下列问题:
此时 执行sudo xcode-select --switch /Applications/Xcode.app
执行完之后再次执行 ./compile-ffmpeg.sh all
如何没问题就可以走下一步,也有可能再次出现问题,如下
最新的 Xcode 已经弱化了对 32 位的支持, 解决方法:
在 compile-ffmpeg.sh
中删除 armv7
, 修改如:
FF_ALL_ARCHS_IOS8_SDK="arm64 i386 x86_64"
再重新执行出现错误的命令: ./compile-ffmpeg.sh all
三、打包IJKMediaFramework.framework
框架
1、首先打开文件夹里面的工程
2、工程打开后设置工程的 scheme, 步骤如下图:
3、设置好 scheme 后, 分别选择真机和模拟器进行编译 command + B
,
如果之前的步骤删除了 compile-ffmpeg.sh
中 armv7
, 这里会报错, 我们直接注释掉就好
编译完成后, 进入 Finder, 如下图
上面每个版本都有两种情况:模拟器状态和真机状态,然后需要合并这两个文件为一个文件
4、合并文件
打开终端 cd
到 product
目录下,然后用终端合并:lipo -create Release-iphoneos/IJKMediaFramework.framework/IJKMediaFramework Release-iphonesimulator/IJKMediaFramework.framework/IJKMediaFramework -output IJKMediaFramework
说明:lipo -create 真机framework路径 模拟器framework路径 -output 合并的文件路径
合并完成以后会发现一个新的文件:
这就是合并完以后的文件;将生成的 IJKMediaFramework
文件替换掉 真机framework
中的 IJKMediaFramework
文件,然后这个替换掉文件的 真机framework
就是我们需要的 通用的framework
了。
注:上面是演示的发布版本的,测试版本的framework已同样的方法合并、替换
四、导入你的项目中
1、直接将IJKMediaFramework.framework
拖入到工程中即可
注意记得勾选 Copy items if needed
和 对应的 target
2、导入依赖的库 libc++.tbd ( 编译器选 gcc 的请导入 libstdc++.tbd )
libz.tbd
libbz2.tbd
AudioToolbox.framework
UIKit.framework
CoreGraphics.framework
AVFoundation.framework
CoreMedia.framework
CoreVideo.framework
MediaPlayer.framework
MobileCoreServices.framework
OpenGLES.framework
QuartzCore.framework
VideoToolbox.framework