我们知道2016年被称为直播元年,随着直播的兴起,对视频进行编解码的框架显得尤为重要了,这次主要介绍FFmpeg视频播放器的集成和使用,FFmpeg是视频编解码的利器。
视频文件有许多格式,比如 avi, mkv, rmvb, mov, mp4等等,这些被称为容器(Container), 不同的容器格式规定了其中音视频数据的组织方式(也包括其他数据,比如字幕等)。容器中一般会封装有视频和音频轨,也称为视频流(stream)和音频 流,播放视频文件的第一步就是根据视频文件的格式,解析(demux)出其中封装的视频流、音频流以及字幕(如果有的话),解析的数据读到包 (packet)中,每个包里保存的是视频帧(frame)或音频帧,然后分别对视频帧和音频帧调用相应的解码器(decoder)进行解码,比如使用 H.264编码的视频和MP3编码的音频,会相应的调用H.264解码器和MP3解码器,解码之后得到的就是原始的图像(YUV or RGB)和声音(PCM)数据,然后根据同步好的时间将图像显示到屏幕上,将声音输出到声卡,最终就是我们看到的视频。
FFMpeg下载
1.下载FFmpeg脚本地址,下载下来后是这样的一个文件夹:
该文件夹里面有这些文件:
2.首先打开终端,输入命令:cd 文件目录(这里你只要将这个文件夹拖到终端里就行,会自动给你生成路径)。这里我的目录是在桌面:
// 注意这里要改成你自己的路径
cd /Users/xxx/Desktop/FFmpeg-iOS-build-script-master
然后输入命令:
./build-ffmpeg.sh
回车之后,会发现这样一个错误:
这时候输入命令:
xcode-select --install
回车之后发现弹出一个弹出框,意思是你要安装Xcode,这时候我就纳闷了,我已经安装Xcode的了,为什么还要我安装呢,是不是因为我的版本不够新呢?我一看我的Xcode 9.2最新的,没问题啊,重启电脑也不行,实在没办法,于是我就点击安装Xcode按钮:
下载软件完成后就会开始下载FFmpeg了,有同学会问,这个下载的Xcode和我之前的有冲突吗?这个下载到底是干什么的?其实,我也不是很清楚,了解的同学可以在评论区告诉我哦,但是执行完这一步之后好像对我们的Xcode并没有什么影响啊,我猜测会不会是在检测我们的Xcode用的呢(个人猜测),反正对我们没影响就是了。接着你会看到:
这里回下载很长时间,耐心等待,真的很久,完成之后是这样的:
好了,到这里我们的FFmpeg就下载好了,打开我们之前的文件,你会发现多了四个文件:
这个就是我们刚才通过终端下载的ffmpeg的编译库。
其中FFmpeg-iOS文件是我们在项目中需要用到的,另外ffmpeg-3.0文件是全平台下载的编译文件(包含了TVOS、Mac OS、iOS等)。
FFMpeg集成
1.新建一个新项目,例如:FFmpegTest。
2.将FFmpeg-iOS文件夹(桌面下载的ffmpeg库文件)添加到LHTestFFmpeg工程中。
3.配置头文件搜索路径:在工程文件->Bulid Setting->Search Paths->Header Search Paths添加
(SRCROOT)/
(
S
R
C
R
O
O
T
)
/
(PRODUCT_NAME)/FFmpeg-iOS/include,(请根据自己实际路径更改)
导入相关依赖库
到这里基本就把FFmpeg集成完毕了,但是FFmpeg是用C语言写的,研究起来很费力,需要有一定的C语言基础,但是它确实很强大。