直播系列五、FFmpeg

什么是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

3.下载FFmpeg-iOS-build-script

FFmpeg-iOS-build-script是编译生成iOS库的脚本。执行下面命令生成动态framework。FFmpeg-iOS-build-script会先下载FFmpeg库,然后再编译,如果已经下载了FFmpeg库,可直接拖到脚本同级目录下。

./build-ffmpeg-iOS-framework.sh

可选择使用./build-ffmpeg.sh 可生成静态库。生成情况如下图:

img

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库成功!