龙空技术网

【发烂渣】iOS - ijkplayer集成【一】

音视频流媒体技术 63

前言:

如今各位老铁们对“苹果c语言编程软件下载”都比较关怀,兄弟们都想要学习一些“苹果c语言编程软件下载”的相关内容。那么小编也在网摘上汇集了一些对于“苹果c语言编程软件下载””的相关内容,希望同学们能喜欢,你们一起来学习一下吧!

1、背景

现在市面上比较多人使用的APP一般都会有视频播放的个功能。视频无论是从功能性、体验性等对于用户来说都是比较友好的方式。所以对于一名iOS开发人员来说,视频、播放器等关于多媒体的开发能力来说,可以来说是必不可少的。

1.1 为什么不使用iOS原生框架

虽然Apple也提供AVPlayer框架、MPPlayer框架(MP在iOS13后,已经被苹果完全抛弃了),但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 进行 下载 或者 克隆 ijkPlayer

git clone  ijkplayer-ios建议:先创建一个文件夹,然后cd进入后,再进行git clone

进入到文件目录,文件目录结构如下图:

进入ijkplayer-ios文件目录,如图:

cd ijkplayer-ios
新建分支latest并切换
git checkout -B latest k0.8.8

如果看到Switched to a new branch 'latest',即可。如图:

到这里,我们基本上把ijkPlayer项目已经git下来了,并且新建和切换到分支latest

正如刚刚也说,ijkPlayer是基于FFMpeg进行封装的,所以在进行使用ijkPlayer之前,我们需要把核心【FFMpeg】进行编译。

因为ijkPlayer 是有2个版本,1个是支持SSL,另外一个是不支持SSL。这两者的区别是什么?简答的来说,就是如果需要支持https的视频连接,请使用SSL版本,否则,反之。

但是!但是!但是!如果需要使用SSL版本,则需要进行openSSL的编译。

记住!记住!记住!在编译ijkPlayer的时候,必须先编译FFMpeg和OpenSSL。两个版本的编译流程如下:

SSL版本:OpenSSL下载->OpenSSL编译->FFMpeg下载->FFMpeg编译-ijkPlayer编译

非SSL版本:FFMpeg下载->FFMpeg编译-ijkPlayer编译

git 的命令如下:(看到这些命令不要那么心急就直接在命令行进行复制、粘贴,往下阅读一下!再看一下!真的,下面的是干货!!!!

./init-ios-openssl.sh  //如果需要https,则这一句必须进行./init-ios.sh       cd ios./compile-openssl.sh clean //如果需要https,则这一句必须进行./compile-ffmpeg.sh clean./compile-openssl.sh all   //如果需要https,则这一句必须进行./compile-ffmpeg.sh all

需要注意的是,因为OpenSSL和FFMpeg都比较大,无论是下载和编译都很耗时。所以耐心等待。

在官方的文档也特别提到的一些地方,我们一起看下:

简单的翻译一下,大概就是如果需要更多的编码或者解码,需要在编译前提前进行更改。命令行如下:

If you prefer more codec/format

cd configrm module.shln -s module-default.sh module.sh#cd android/contribcd iossh compile-ffmpeg.sh clean
If you prefer less codec/format for smaller binary size (include hevc function)
cd configrm module.shln -s module-lite-hevc.sh module.sh#cd android/contribcd iossh compile-ffmpeg.sh clean
If you prefer less codec/format for smaller binary size (by default)
cd configrm module.shln -s module-lite.sh module.sh#cd android/contribcd iossh compile-ffmpeg.sh clean

【免费分享】音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以后台私信扣1免费领取~

2.2 使用SSL

接下来,本人就会使用SSL的版本进行步骤分解和说明

2.2.1 进行OpenSSL的clone,如图:(真的会很耗时!真很耗时!真的很耗时!)。

./init-ios-openssl.sh  

2.2.2 进行FFMpeg的clone。(真的会很耗时!真很耗时!真的很耗时!)

./init-ios.sh 

2.2.3 clon完毕后,我们就可以开始进行编译运行了。

但编译前我们需要先clean。首页我们需要cd进入“ios”这个文件夹里面进行清除和编译。

cd ios                   ./compile-openssl.sh clean  //对openssl进行clean./compile-ffmpeg.sh clean   //对ffmpeg进行clean

2.2.4 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" ]; then第159行改为:【echo " compile-ffmpeg.sh arm64|i386|x86_64"】

修改完后,我们重新运行命令行,然后安静的等待即可。

./compile-ffmpeg.sh all

看到没有任何错误,即表示已经编译完成了。

再进入到文件夹【ios】里面,即可以正常运行ijkplayer了。

然而,在运行【IJKMediaPlayer】或者【IJKMediaDemo】我们仍然会出现几个问题。

关于ijkplayer的framework编译和打包。我将在下一篇文章中,重点讲解。

原文链接:

标签: #苹果c语言编程软件下载