1.1 为什么不使用iOS原生框架
虽然苹果也提供了AVPlayer框架和MPPlayer框架(iOS13后MP已经被苹果彻底放弃),但对于一些高度定制、直播等功能来说AVPlayer并不是更好的解决方案。同时,对于现在的APP来说,有苹果版本,就必然有安卓版本。如果这个时候,苹果可以解决这个功能,但是安卓不能做同样的功能,或者安卓可以,但是苹果不能。对于用户来说,我认为这是不能接受的。
1.2 为什么使用ijkPlayer
ijkPlayer -- 它实际上是BiliBili-B开源的一个开源视频框架。它有安卓和苹果两种终端。这对公司来说是一个更好的解决方案。基本上可以保证,在功能的开发中,可以基本保证功能的一致性,用户在使用APP时也能有更好的体验。
1.3 ijkPlayer的由来
ijkPlayer实际上是一个开源架构,封装了著名的跨平台框架[FFMpeg],允许视频框架在多个平台上开发和使用。
1.4 题外话 -- FFMpeg介绍
它的全称是“Fast Forward Mpeg”,正如它的名字一样,速度快,功能强大。是一款集转换、播放、录制等功能于一体的多媒体视频处理解决方案。 FFmpeg虽然是在Linux下开发,但它是基于C语言开发的,因此可以同时在Windows、MacOS等系统下编译、运行和开发。由于其完善性,FFMpeg已被许多主要制造商集成或仍在使用。如VLC、MPlayer,还有国内的暴风视频、QQ视频也在其中。需要说明的是,该项目是基于LGPL/GPL的开源协议。关于FFMpeg框架的解读,稍后我会专门写一篇文章来介绍。
2、集成开始
下面我来讲解一下ijkplayer的集成方法
2.1 获取ijkPlayer
去全球最大的交友平台GitHub下载或者克隆ijkPlayergit clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios 建议:先创建一个文件夹,然后cd进去,然后git clone到文件中目录,文件目录结构如下:
进入ijkplayer-ios文件目录,如图:cd ijkplayer-ios新建分支latest,切换git checkout -Blatest k0.8.8。如果您看到切换到“最新”的新分支,就是这样。如图所示:
至此,我们已经基本gitized了ijkPlayer项目,并创建并切换到了最新的分支。
刚才提到,ijkPlayer是基于FFMpeg进行封装的,所以在使用ijkPlayer之前,我们需要编译核心【FFMpeg】。
因为ijkPlayer有两个版本,一个支持SSL,另一个不支持SSL。两者有什么区别?简而言之,如果您需要支持https 视频连接,请使用SSL 版本,否则反之亦然。
但!但!但!如果需要使用SSL版本,则需要编译openSSL。
记住!记住!记住!编译ijkPlayer时,必须先编译FFMpeg和OpenSSL。两个版本的编译过程如下:
SSL版本:OpenSSL下载-OpenSSL编译-FFMpeg下载-FFMpeg编译-ijkPlayer编译
非SSL版本:FFMpeg下载-FFMpeg编译-ijkPlayer编译
我们看一下官方文档中特别提到的一些地方:
简单翻译就是如果需要更多的编码或者解码,需要在编译之前提前改一下。命令行如下:
如果您更喜欢更多编解码器/格式cd configrm module.shln -s module-default.sh module.sh#cd android/contribcd iosshcompile-ffmpeg.sh clean如果您更喜欢更少编解码器/格式以获得较小的二进制大小(包括hevc函数)cd configrm module.shln -s module-lite-hevc.sh module.sh#cd android/contribcd iosshcompile-ffmpeg.sh clean如果您更喜欢较少的编解码器/格式以获得较小的二进制大小(默认情况下)
2.2 使用SSL
接下来,我将步骤- SSL 版本的使用步骤分解和说明
2.2.1 克隆OpenSSL,如图:(真的很费时间!真的很费时间!真的很费时间!)。
./init-ios-openssl.sh2.2.2 克隆FFMpeg。 (真的很费时间!真的很费时间!真的很费时间!)
克隆完./init-ios.sh2.2.3后,我们就可以开始编译运行了。
但我们需要在编译之前进行清理。在主页上,我们需要cd到“ios”文件夹中进行清理和编译。
cd ios ./compile-openssl.sh clean //清理openssl./compile-ffmpeg.sh clean //清理2.2.4 ffmpeg clean之后就可以开始编译了。
./compile-openssl.sh all //编译ssl。/compile-ffmpeg.sh all //编译ffmpeg 2.2.5 重要!重点!重点!
一般执行./compile-ffmpeg.sh all时会出现如下错误。
这个时候不要害怕,我们是技术人员,解决问题是我们的强项!
请按照以下几个步骤来解决此问题。
打开[ios]文件夹中的[compile-ffmpeg.sh]。该文件第24行修改为: [FF_ALL_ARCHS_IOS8_SDK='arm64 i386 x86_64] 第120行修改为:[if [ '$FF_TARGET'='armv7s' - o '$FF_TARGET'='arm64' ];然后]第159行改为: [echo 'compile-ffmpeg.sh arm64|i386|x86_64']修改后,我们重新运行命令行,静静等待。
./compile-ffmpeg.sh all 如果没有看到错误,说明编译已经完成。
然后进入文件夹【ios】就可以正常运行ijkplayer了。
然而,我们在运行[IJKMediaPlayer]或[IJKMediaDemo]时仍然遇到一些问题。
关于ijkplayer的框架编译和打包。我将在下一篇文章中重点讨论这一点。
用户评论
iOS 开发好难啊!用这种“发烂渣”的库真的体验极差,我试了各种方法都解决不了播放问题,感觉项目进度都要被他拖垮了,希望哪天能找到一个稳定靠谱的视频播放方案。
有19位网友表示赞同!
这篇文章写得还不错,详细解释了ijkplayer的一些基本功能和用法,对于iOS入门者来说确实挺有帮助的。不过,“发烂渣”这个词实在有点过于负面,还是建议用更加中性的描述更好一些,例如“老旧”或者“有待改进”。
有20位网友表示赞同!
楼主说的情况我太懂了,直接说"发烂渣"!很多时候它真的会把你各种坑死,明明教程看着简单,实际操作起来却发现问题一堆。感觉有时候用原生API反而更稳一点?
有10位网友表示赞同!
这篇文章让我了解到ijkplayer的潜力,其实它挺强大的,支持多种格式和协议,只要能找到合适的集成方法,应该就能解决大部分视频播放需求。希望iOS开发者越来越适应这种第三方库的使用方式。
有12位网友表示赞同!
我是个新手,一直想在自己的iOS项目里添加视频播放功能,看到了这篇文章才知道ijkplayer,感觉还挺方便的。不过还是要多练习,才能熟练掌握它。希望以后还有更多关于ijkplayer的资源分享给小白玩家
有9位网友表示赞同!
楼主说的“一”这个词让我很好奇,是在指ijkplayer本身的功能?还是指别的什么?希望能再详细补充一下,这样对理解文章更有帮助。
有17位网友表示赞同!
我之前也用过ijkplayer,确实遇到过很多兼容性和性能问题。现在我在开发类似的项目时更倾向于使用一些商业化视频播放SDK,虽然成本会高一点,但至少比较稳定可靠。
有15位网友表示赞同!
我觉得ijkplayer不至于"发烂渣"吧?它毕竟是开源的,还是有很多开发者在维护和更新它。如果能找到合适的集成方法和参数配置,应该就能发挥出它的优势,完成视频播放的功能。
有14位网友表示赞同!
“一”这个词感觉很抽象,不知道楼主具体指的是哪个方面,希望可以解释一下,让读者更容易理解文章内容。
有18位网友表示赞同!
我觉得ijkplayer在某些情况下还是很有用的,比如需要自定义播放逻辑或者处理一些特殊情况。但是如果只是一个简单的视频播放需求,可能原生API会更加易于使用和维护。
有6位网友表示赞同!
对于iOS开发者来说掌握一些不同类型的第三方库确实很重要,ijkplayer就是其中一种,它可以帮助我们快速实现视频播放功能,节省开发时间和成本。
有10位网友表示赞同!
在学习新的技术的时候,遇到困难是难免的,所以要保持耐心和积极的心态,不断探索和尝试。相信只要坚持下去,就能克服难题,最终顺利完成项目!
有15位网友表示赞同!
最近在研究集成ijkplayer的过程,感觉还是比较复杂,需要深入了解其内部结构和代码逻辑才能高效运用于项目中。希望能够尽快掌握它的操作技巧,提高开发效率!
有17位网友表示赞同!
我以前也曾经用ijkplayer失败过很多次,所以非常认同楼主说的“发烂渣”。不过后来我还是找到了解决问题的思路,现在在我的项目里效果还是挺不错的。如果能把自己的经验分享出来,相信也能帮助到一些遇到类似问题的开发者!
有11位网友表示赞同!
对于iOS开发者来说,掌握好主流的第三方库,例如ijkplayer,对提高开发效率和项目质量至关重要。建议开发者可以多学习使用这些工具,并将其应用于实际项目中!
有20位网友表示赞同!
这篇文章让我了解到ijkplayer的一些基本用法,但我感觉还需要更深入的理解才能更好地运用它。希望以后能看到更多关于ijkplayer的详细操作教程和案例分享!
有9位网友表示赞同!
虽然ijkplayer确实存在一些问题,但这也不能否定它的价值。它毕竟是开源的,并且有很多开发者在维护和更新它。我相信只要不断完善和改进,ijkplayer就能成为一个更优秀的视频播放库!
有17位网友表示赞同!