FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用 LGPL 或 GPL 许可证。它提供了录制、转换以及流化音视频的完整解决方案。由于公司项目要用到实时视频监控播放,所以在这里记下如何移植 FFmpeg 开源框架到 iOS 上面。
准备条件
1.安装 yasm。点击这里,版本是yasm-1.2.0。解压后
cd yasm-1.2.0
./configure
make
make install
2.到https://github.com/libav/gas-preprocessor下载 gas-preprocessor.pl
文件,复制gas-preprocessor.pl
到/usr/bin
下,修改文件权限 chmod 777 /usr/local/bin/gas-preprocessor.pl
搭建步骤
1.下载脚本文件
https://github.com/kewlbear/FFmpeg-iOS-build-script。
这个脚本可以一次编译,就生成适合各个版本的iPhone。ffmpeg官网,可以找到适合所对应操作系统下载源码包。
2.编译脚本
解压后找到 build-ffmpeg.sh 文件,输入
./build-ffmpeg.sh
脚本则会自动从github中把ffmpeg源码下到本地并开始编译。 编译结束后,文件目录如下:
ffmpeg-2.6.2是源码, FFmpeg-iOS是编译出来的库,里面是我们需要的.a 静态库,一共有7个。 终端输入
lipo -info libavcodec.a
可以查看.a 包支持的架构,包括 armv7 armv7s i386 x86_64 arm64这几个架构。
3.把 FFmpeg-iOS 导入工程。
这里我下载一个 demo 工程 iFrameExtractor-master
,git代码参考:https://github.com/lajos/iFrameExtractor
或者 RTSPPlayer
https://github.com/SutanKasturi/RTSPPlayer
demo目录如下:
然后在Build Settings
中找到Search Paths
,设置Header Search Pahts
和 Library Search Paths
如下。不然会报include“libavformat/avformat.h” file not found
错误。
4.在工程中导入其他库文件。
libz.dylib libbz2.dylib libiconv.dylib
是必须要导入的。配置好如下目录:
5.编译和运行
点击 play
,出现下图小娃娃视频,搭建成功
参考:
http://blog.csdn.net/leixiaohua1020/article/details/44064715
总结
ffmpeg框架初步搭建完成,这个过程漫长而又值得回味,一开始查了很多资料,但是没一个说得完整,总是会出现些错误,实践后才知道,看似简单,但也得动手一遍。