iOS(Swift)中的基于FFmpeg的IJKPlayer从引入到使用

FFmpeg是音视频流相关的比较牛逼的东西吧,我不了解,然后从头开始学起!先从能看到结果的东西搞起,就是B站大牛写的IJKPlayer,从这个开始了解一下FFmpeg。

1. 编译FFmpeg类库

1.1 编译前的准备

按照github上(https://github.com/Bilibili/ijkplayer)bilibili所介绍的流程,首先先做一些编译FFmpeg的准备工作。

1.1.1 homebrew, git, yasm

首先,安装一下homebrew。homebrew这个东西应该是使用cocoaPods的时候接触过,反正用这个东西可以安装许多东西,使用起来方便。具体的安装这个的方法,就百度一下,肯定知道哈。

其次,安装一下git。git这个东西应该是比别的一些版本控制管理的要厉害吧,分布式的,而且github,看名字就……你懂得。我是一只用git的,但是我没有深入的去看git,只是用了一些比较简单的git的命令来管理app的版本。

最后安装一下yasm。这个yasm是一个完全重写的NASM汇编。目前,它支持x86和AMD64指令集,接受NASM和气体汇编语法,产出二进制, ELF32 , ELF64 , COFF , Mach - O的( 32和64 ) , RDOFF2 ,的Win32和Win64对象的格式,并生成STABS 调试信息的来源,DWARF 2 ,CodeView 8格式。(以上这些均来自于互联网,我并看不懂这些都是什么,但是大体的应该就是一个汇编器吧,一种编译的时候可以加快速度之类的一些环境吧)

在安装了homebrew的情况下,终端执行以下命令安装yasm:
brew install yasm

iOS(Swift)中的基于FFmpeg的IJKPlayer从引入到使用_第1张图片
没有错误信息安装成功.png

1.2 编译FFmpeg

首先克隆下来IJKPlayer的项目,找一个你要克隆下来的文件夹,cd进去,然后直接克隆下来:

git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios
iOS(Swift)中的基于FFmpeg的IJKPlayer从引入到使用_第2张图片
克隆成功.png

然后进入到克隆到的文件夹中:

cd ijkplayer-ios
iOS(Swift)中的基于FFmpeg的IJKPlayer从引入到使用_第3张图片
文件夹中的文件.png

其中的init-ios.sh是一个看名字用来初始化IJKPlayer的东西,实际上它做的工作是下载FFmpeg编译的相关的真机、模拟器框架(armv7、arm64、i386、x86_64)。然后我们执行这个脚本:

./init-ios.sh
iOS(Swift)中的基于FFmpeg的IJKPlayer从引入到使用_第4张图片
其中一项类似的信息.png

之后依次执行下面的命令,来编译FFmpeg:

cd ios
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all

搂一眼期间没有Error的提示,应该就是顺利编译了。打开
ios/IJKMediaDemo/IJKMediaDemo.xcodeproj
这个路径的这个工程,看看官方给的demo能不能跑起来,跑起来的话,就没问题了。

iOS(Swift)中的基于FFmpeg的IJKPlayer从引入到使用_第5张图片
demo中的直播画面.png

2. 把IJKPlayer集成到自己的项目中

具体的集成过程,可以看github上面的把整个工程给添加进去,也可以使用framework。已经有大神写的很清楚了:http://www.jianshu.com/p/1f06b27b3ac0,但是我按照这个教程直接弄,之后会出现问题,是一个连接的问题:

iOS(Swift)中的基于FFmpeg的IJKPlayer从引入到使用_第6张图片
一个链接的问题.jpg

诸如这样的报错之类的把,是缺少了链接库之类的吧,我也不是太明白,总之是因为FFmpeg里面有一些C++的东西吧(这个问题看上去是个关于C++的问题)。解决的方案是,在other link flag 里面添加一个:

-lstdc++

或者是再加一个依赖库:

iOS(Swift)中的基于FFmpeg的IJKPlayer从引入到使用_第7张图片
关于编译链接C++的库.png

这样问题就解决了,然后我们就可以参考demo,来进行直播画面的播放控制之类的了。

你可能感兴趣的:(iOS(Swift)中的基于FFmpeg的IJKPlayer从引入到使用)