不知不觉已经两个月没有更新东西,以前说要坚持的东西,一下就荒废了,内心还是很懊恼的。有句话说的好“有失必有得”,可能在技术上没有多的进步,不过在这段时间自己经历的一些事情,让自己成熟了不少。同时自己也下定决心去改变自己坏毛病,还有有自己的健身计划,旅游计划等等,因为我相信“一切皆有可能”。我是一个不甘于平庸的人,我也相信自己的人生会过的更加精彩!希望我们一起努力让自己变的更加优秀。
似乎扯远了,今天主要记录我使用B站视频播放的开源组件出现内存泄漏解决的过程。
一、首先还是说下怎么集成ijkplayer到自己的项目中
1.1 首先安装必要的工具,如果有的话就直接跳过这个步骤
ruby -e "$(curl -fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install git
brew install yams
1.2 下载ijkplayer - iOS
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios
cd ijkplayer-iosgit
checkout -B latest k0.5.1
下载最新版本的ijkplayer,我开始使用k0.4.5.1会有内存泄漏。
1.3 编译
cd ios
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all
如果编译成功的话会得到一系列文件如图

红色标注为我们需要用的播放组件,打开工程就会看到它是一个framework工程。将framework拖到我们需要用到的工程中就可以了使用了。

不过另外这里需要注意一个问题,它这个是分模拟器和真机的,为了得到一个通用的framework我们需要用到lipo来合并。

我们合并一下release版本的模拟器和真机.命令如下
lipo -create 模拟器版本路径 真机版本路径 -output 输入路径
然后就会得一个framework,替换一下就可以使用了。貌似还有用脚本来自动打包framework,可是我不会,知道的朋友可以告诉我。

二、使用ijkplayer--k0.4.5.1会出现内存泄漏,下面是我使用的场景,我是点击的时候播放,滚出屏幕停止播放,每次都是先把播放器remove,再重新创建,结果内存一直涨。

自己找了很久也找不到原因,于是就用Profile的Alloctions工具来监测,发现跟coreAnimation的渲染有关。苦于没有解决办法,就在其github上寻找答案。或者也可以自己提交问题给开源的作者。

于是就在问题中搜索render关键字很快就找到了我碰到的问题有,让我很快找到了解决办法,已经有人提交了修改,就是替换最新的版本,就可以了。
上面就是我解决的内存泄漏的过程,可能有点笨,或者有错误的地方,如果有更好的办法,希望大神指点一下我,谢谢!!
网友评论