什么是FFmpeg
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。FFmpeg支持mac命令行、也支持iOS平台。由于在iOS8之前未开放音视频硬件编解码接口(AudioToolBox和VideoToolBox),
大多数具有音视频功能的APP都是使用FFmpeg去实现视频的编码和解码(软解)。值得注意的是FFmpeg iOS 最新版已加入了AudioToolBox和VideoToolBox硬解/编码。
Mac下安装FFmpeg
安装Homebrew
使用 brew -v 命令检查Homebrew是否安装,如果已安装会打印brew版本号。若未安装,使用下面命令安装Homebrew.
ruby -e “$(curl -fsSL [https://raw.githubusercontent.com/Homebrew/install/master/install](https://raw.githubusercontent.com/Homebrew/install/master/install))”
安装完毕后,可以用 brew -v 确认一下。
Homebrew安装FFmpeg
brew install ffmpeg
安装完毕后,可以用 brew info ffmpeg 确认一下。
iOS平台下使用FFmpeg
1.下载gas-preprocessor
gas-preprocessor是FFmpeg编译所需的脚本文件。解压后将gas-preprocessor.pl 复制到/usr/sbin目录下,如果这个目录无法复制,那么就将该文件复制到/usr/bin目录下。之后根据复制的目录路径在terminal中输入以下指令开启可执行权限。
chmod 777 /usr/sbin/gas-preprocessor.pl
或者
chmod 777 /usr/bin/gas-preprocessor.pl
2.下载yasm
yasm是一个完全重写的NASM汇编。使用brew安装yasm
brew install yasm
FFmpeg-iOS-build-script是编译生成iOS库的脚本。执行下面命令生成动态framework。FFmpeg-iOS-build-script会先下载FFmpeg库,然后再编译,如果已经下载了FFmpeg库,可直接拖到脚本同级目录下。
./build-ffmpeg-iOS-framework.sh
可选择使用./build-ffmpeg.sh 可生成静态库。生成情况如下图:
iOS下集成测试
新建FFmpegDemo iOS single app项目,拖入FFmpeg.framwork, 在linked libray中添加libz.tbd、libbz2.tbd、libiconv.tbd。添加以下代码打印版本库信息。
#import "TestVersionViewController.h"
#import <FFmpeg/FFmpeg.h>
@interface TestVersionViewController ()
@end
@implementation TestVersionViewController
- (void)viewDidLoad {
[super viewDidLoad];
printf("%s",avcodec_configuration());
}
@end
如果能够正常编译运行,则集成FFmpeg库成功!