FFmpeg:浅谈开发准备工作

FFmpeg:浅谈开发准备工作_第1张图片

参考 https://www.jianshu.com/p/129874f34a58


前言


上一篇博客我们聊了一下如何使用FFmpeg的命令来实现各种需求,从这篇博客我们将一起来看一下如何使用使用FFmpeg代码实现各种需求,这一篇博客主要是来看一下,如何编译FFmpeg的静态库,以及FFmpeg中各个模块的作用.


编译FFmpeg静态库


这里先说iOS该如何编译FFmpeg,后期会说安卓如何编译FFmpeg静态库.

首先我们先下载编译脚本,脚本的Github连接如下所示.

https://github.com/kewlbear/FFmpeg-iOS-build-script

在编译之前我们需要做以下的几个操作.

下载并安装 gas-preprocessor .

  • 先去 gas-preprocessor 下载文件.
  • 复制gas-preprocessor.pl到/usr/local/bin下.
  • 修改权限 chmod 777 /usr/local/bin/gas-preprocessor.pl

下载并且安装 yasm .

brew install yasm

由于,FFmpeg框架中的一个结构体命名为"AVMediaType"与苹果自带框架产生冲突,所以,我们必须修改编译脚本,使用"FFmpegAVMediaType"带替换"AVMediaType".这里需要在脚本文件中添加如下命令行,即将AVMediaType替换为FFmpegAVMediaType.

grep -rl AVMediaType ./$SOURCE | xargs sed -i .bak s@AVMediaType@FFmpegAVMediaType@g

当然了,我们可以通过修改build-ffmpeg.sh内容来定制FFmpeg.例如我们想指定FFmpeg版本,我们就可以修改如下参数即可.

FF_VERSION="4.2"

如果我们想修改编译环境,我们需要修改如下信息.

ARCHS="arm64 armv7 x86_64 i386"

当上面的准备工作完成之后,我们就使用下面命令进行编译.

./build-ffmpeg.sh 


搭建FFmpeg开发环境


上一个模块我们已经编译FFmpeg静态库了,接下来FFmpeg-iOS文件夹整体需要添加到我们的工程中去.

FFmpeg:浅谈开发准备工作_第2张图片

由于我们需要进行C,C++的混编,所以我们需要把 AppDelegate.m 改名为 AppDelegate.mm .

然后我们需要为FFmpeg添加以下的依赖库文件.

libz.tbd
libbz2.tbd
libiconv.tbd
CoreMedia.framework
AudioToolbox.framework
VideoToolbox.framework
AVFoundation.framework

在Build Setting中要禁止Bitcode,否则会编译报错.

在Build Setting中 设置 Header Search PathsLibrary Search Paths . 如下所示.

# Header Search Paths:
$(PROJECT_DIR)/XXFFmpeg/FFmpeg-iOS/include
# Library Search Paths:
$(PROJECT_DIR)/XXFFmpeg/FFmpeg-iOS/lib

你可能感兴趣的:(FFmpeg:浅谈开发准备工作)