ijkplayer的集成和运用

最近因项目需要了解和学习了关于直播的播放器集成,首先了解了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.sharmv7, 这里会报错, 我们直接注释掉就好
这里写图片描述

编译完成后, 进入 Finder, 如下图
这里写图片描述

这里写图片描述
上面每个版本都有两种情况:模拟器状态和真机状态,然后需要合并这两个文件为一个文件
4、合并文件
打开终端 cdproduct 目录下,然后用终端合并: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

demo下载地址:https://github.com/Jadekirin/TBijkplayer.git

集成的framework:我自己集成的framework链结地址

猜你喜欢

转载自blog.csdn.net/qq_30963589/article/details/80829681