iOS音视频开发音视频

iOS手动编译并搭建FFmpeg

2019-05-30  本文已影响23人  小东邪啊

需求

手动编译打开x264功能的FFmpeg并放入新建的项目中,可以编译成功.以便后续使用.

背景

移动端学习音视频开发,FFmpeg可以说是必学的框架,FFmpeg在linux平台下开发,但它同样也可以在其他操作系统环境中编译运行,包括Windows、Mac OS X等。FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序,它包括了目前领先的音/视频编码库libavcodec。

FFmpeg有非常强大的功能,包括视频采集功能、视频格式转换、视频抓图、给视频加水印等。同时还支持以RTP方式将视频流传送给支持RTSP的流媒体服务器,支持直播应用。

安装方式

可以通过如下两种方式安装ffmpeg

如何选择

阅读前提:

注意: 文本仅仅编译真机使用的arm64环境,所以模拟器下无法运行项目,如需添加其他架构自行更改两个脚本文件.

本文需要的所有安装包均在以下链接中,因为下文中官网地址是外网,没有VPN的同学可能下载会很慢.故本人整理好最新所有版本放在下面的百度云盘中.

链接: https://pan.baidu.com/s/1nYBQUi8drEpkjmwlIpbetQ 提取码: ercw 

1.下载gas-preprocessor

此文件是编译FFmpeg必备的脚本文件,使用如下命令将其拷贝进bin下

cp -f /xxx/gas-preprocessor.pl /usr/local/bin/

2.安装yasm

Yasm是一个完全重写的NASM汇编并且支持x86和AMD64指令集.

brew install yasm

3. 下载x264-iOS编译脚本源码

因为编译脚本中指定文件目录为x264,所以需要改名,也可以改编译脚本
最好手动强制设置下GCC位置,否则可能会报错,然后执行命令:

sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer/
./build-x264.sh

No working C compiler found : 新版mac直接编译会报错,原因是gcc一些必要工具找不到.可能是xcode位置换了的原因,因为我们主要使用真机调试,所以我们在编译脚本中只保留arm64即可,如下修改后,可以直接编译通过. 不过像模拟器这样的设置是无法使用x264的,因为我们相当于仅编译了真机所需的库.

ARCHS="arm64 x86_64 i386 armv7 armv7s"
改为如下
ARCHS="arm64"

执行完成之后可以看到生成了x264-iOS文件夹

4. 下载FFmpeg-iOS编译脚本源码

注意: 在这里可以仅下载FFmpeg-iOS编译脚本,不用下载源码,执行脚本会自动下载源码,如果不想每次自动下载,可以手动下载源码,稍微修改下FFmpeg编译脚本即可.这里不做过多说明.

修改脚本(build-ffmpeg.sh文件)内容

4

x264编译好的文件夹必须在当前目录并且命名为fat-x264,所以我们第3步编译后生成的x264-iOS文件夹改名成fat-264,放在FFmpeg-iOS-build-script这个文件夹中。目录结构如下:


5.

并修改如下内容

CFLAGS="$CFLAGS -mios-version-min=$DEPLOYMENT_TARGET -fembed-bitcode"
修改为
CFLAGS="$CFLAGS -mios-version-min=$DEPLOYMENT_TARGET"

因为我们在上一步中仅仅编译arm64的x264,所以这里我们也仅仅编译arm64的FFmpeg.稍微修改脚本文件即可.

ARCHS="arm64 armv7 x86_64 i386"
修改为
ARCHS="arm64"

编译脚本文件

./build-ffmpeg.sh 

5. Xcode编译

新建一个iOS工程,然后将ViewController.m重命名为ViewController.mm,因为FFmpeg中涉及C,C++混编,所以需要做此操作.

3

注意: FFmpeg源码中调用了一些iOS系统的库,所以,我们必须将依赖的库导入项目中.

4 2

这里特别要注意,因为在大多数项目中以及FFmpeg自身源代码中,都是以以下格式来导入的头文件

1.

参考文章

上一篇 下一篇

猜你喜欢

热点阅读