iOS集成ijkplayer框架总结

ijkplayer是github上开源的一个直播框架,基于ffmpge,目前很多主流的直播平台都是采用这个直播框架,我在工作的过程中,也碰到了集成的这个问题,下面总结一下。

一、下载源码

  1. 下载地址:https://github.com/Bilibili/ijkplayer
  2. 下载后解压
    文件如下图
iOS集成ijkplayer框架总结_第1张图片
文件目录

这里有两个文件夹 需要我们了解,一个是 config,另外一个是 ios

二、开始编译

  1. 编译ffmpeg

第一次编译的话,需要去初始化一下环境(下载ffmpeg)

在当前目录下,执行命令

 ./init-ios.sh 

这个过程可能有点久(网络好的朋友就当我没说)

初始化(下载)完成之后,可以考虑我们需要使用ffmpeg的哪些功能,因为ffmpeg编译是可裁剪的,为了减少我们生成包的大小,尽量还是去配置一下编译参数

打开上文中提到的config 文件夹,里面有三个文件,我们只需要修改module-lite.sh 这个文件即可,对于不需要的模块,就disable掉!

修改完成后,打开命令行工具,通过命令进入到ios文件夹

插播一下指令集的划分

指令集 设备
armv6 iPhone, iPhone2, iPhone3G, 第一代、第二代 iPod Touch
armv7 iPhone3GS, iPhone4, iPhone4S,iPad, iPad2, iPad3(The New iPad), iPad mini,iPod Touch 3G, iPod Touch4
armv7s iPhone5, iPhone5C, iPad4(iPad with Retina Display)
arm64 iPhone5S, iPad Air, iPad mini2(iPad mini with Retina Display)
i386 32位模拟器设备
x86_64 64位模拟器设备

OK 继续
执行命令

 ./compile-ffmpeg.sh clean  //清除掉之前编译生成的文件
 ./compile-ffmpeg.sh all   //选择编译所有的指令集  rmv7 arm64 i386 x86_64 

编译的过程中,如果出现了错误,查看错误原因,然后去/config/module-lite.sh 这个文件里重新配置一下,然后再编译。

三、生成IJKMediaFramework.framework库文件

打开ios/IJKMediaPlayer 项目文件,然后修改编译参数为Release

分别用真机和模拟器运行项目,运行成功后执行下图操作

iOS集成ijkplayer框架总结_第2张图片
IJKMediaPlayer.framework

在Findle中可以看到两个版本的文件

iOS集成ijkplayer框架总结_第3张图片
两个库文件

下面就是要将两个版本的framework合并成一个文件,这样模拟器和真机都可以使用这个库了

iOS集成ijkplayer框架总结_第4张图片
合成目标文件

合并使用的命令如下

lipo -create ""真机版本路径"" ""模拟器版本路径"" -output ""合并后的文件路径""

把合并后的文件替换到真机的framework中,如下图


iOS集成ijkplayer框架总结_第5张图片
将合并好的文件替换

绿色的框里的这个 就是最终的framework文件了

四、测试framework

新建一个项目,将生成的这个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

测试播放代码如下

id  mePlayer=[[IJKFFMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:@""视频流地址""] withOptions:nil];
UIView *playView=[self.mePlayer view];//播放器的view
playView.frame=CGRectMake(0,0,self.view.frame.size.width,200);
playView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[self.view insertSubview:playView atIndex:1];

你可能感兴趣的:(iOS集成ijkplayer框架总结)