在xcode 安装搭建ffmpeg 开发环境
ffmpeg 是基本上市面上所有有视频都会用到。那么如何在iOS 使用呢?
因为ffmpeg 使用的是c++ 所以在xcode 需要构建c++环境。
在使用ffmpeg 需要交叉编译 ,为什么需要交叉编译在这里不再详细说,请看这里。
当然有大神将交叉编译过程写成了脚本文件,我们只需要在这里 https://github.com/kewlbear/FFmpeg-iOS-build-script 将文件下载下来。
cd 到 build-ffmpeg.sh 文件下。
./build-ffmpeg.sh 执行 。
无法执行就使用 chmod 授权一下。
执行的时候会提示你Yasm not found
不用担心,他会自己进行安装。
接下来自动下载ffmpeg 并完成交叉编译。
完成后是这个样子:
交叉编译会有指令集的问题。我们来看一下我们编译的版本支持哪些指令集
cd 到FFmpeg-iOS/lib 下
$ cd /Users/xxx/Downloads/FFmpeg-iOS-build-script-master/FFmpeg-iOS/lib
使用
$ lipo -info libavfilter.a
内容如下:
Architectures in the fat file: libavfilter.a are: i386 armv7 x86_64 arm64
armv7 和 arm64 是iPhone 使用的。具体对应到机型
arm64 : 6s | 6s plus|6 | 6plus|5S | iPad Air | iPadmini2(iPad mini with Retina Display)
armv7s: 5 |5C |iPad4(iPad with Retina Display)
armv7 : 4 |4S |iPad|iPad2 |iPad3(The New iPad)|iPad mini|iPod Touch3G|iPod Touch4
平时经常用的是 armv7 和arm64 ,当然并不是说其他不用,多一种指令集会使包变大。
那么 其他两种 是Mac系统处理器指令集。
i386 模拟器32位。
x86_64 64所支持的架构。
继续:
如果想要在项目中使用fmpeg
1、 将 FFmpeg-iOS 文件夹拖入项目中。
2、 Build setting 中 Header Search Paths 设置 $(SRCROOT)/FFmpeg-iOS/include (请根据自己文件拖入的路径设置)。
3、 Build setting 中 Library Search Paths 设置 $(PROJECT_DIR)/FFmpeg-iOS/lib (根据自己文件拖入的路径设置)。
4、增加frmework 如图片所示
5、 如果提示 other link error之类的错误,可以试试在Build Settings->Other Linker flags输入-all_load
6、
#import "ViewController.h"
#include <libavcodec/avcodec.h>
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
printf("%s",avcodec_configuration());
UILabel *lab = [UILabel new];
lab.text = [NSString stringWithUTF8String:avcodec_configuration()];
lab.numberOfLines = 0;
lab.frame = self.view.bounds;
[self.view addSubview:lab];
}
在模拟器中运行成功显示
2432CB88-F91B-4ED0-BE53-E6E87C02576A.png
网友评论