iOS开发中集成FFmpeg以及相关注意事项

本文详细介绍了在iOS开发中如何编译和集成FFmpeg,包括编译过程、依赖库的添加、命令行功能集成以及常见命令和注意事项。FFmpeg用于音视频处理,通过设置不同参数,可以实现GIF转视频、照片生成视频、视频调速等功能。
摘要由CSDN通过智能技术生成

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它提供了录制、转换以及流化音视频的完整解决方案。同时,FFmpeg是一套跨平台的方案,所以我们可以在iOS开发中使用它来进行一些视频与GIF的开发。

接下来,我们从编译FFmpeg开始,到使用FFmpeg,再到使用中的一些注意事项进行总结。

一、编译FFMpeg

在这个过程中,我们需要以下几个资源:

1.gas-preprocessor

2.yasm

3.FFmpeg-iOS-build-script

1.gas-preprocessor

gas-preprocessor 其实就是我们要编译FFmpeg所需的脚本文件。

1).下载并解压

2).将 gas-preprocessor.pl 文件复制到 /usr/sbin/ 目录下,如果该目录无法修改,那么可将文件复制到 /usr/local/bin/ 目录下。

3).为 gas-preprocessor.pl 文件开启可执行权限,在终端中进行如下命令:

chmod 777 /usr/sbin/gas-preprocessor.pl

chmod 777 /usr/local/bin/gas-preprocessor.pl

2.yasm

yasm 是一个完全重写的 NASM 汇编。目前,它支持 x86 和 AMD64 指令集,接受 NASM 和气体汇编语法,产出二进制,ELF32,ELF64,COFF,Mach-O 的(32和64),RDOFF2的 Win32 和 Win64 对象的格式,并生成 STABS 调试信息的来源,DWARF 2 ,CodeView 8格式。

可以使用homebrew来安装:

brew install yasm

3.FFMpeg-iOS-build-script

在这个文件中,我们可以对要进行编译的FFmpeg进行一系列的设置。

1).设置FFmpeg的版本

FF_VERSION="3.3.6"

2).设置所要支持的架构

ARCHS="arm64 armv7"

3).设置所需要的FFmpeg功能配置
该设置可在 CONFIGURE_FLAGS= 中进行,通过禁用一些不必要的功能,可以有效地减小最终库文件的大小,格式如下:

禁用交叉编译:

--disable-cross-compile

支持交叉编译:

--enable-cross-compile

4).确保该脚本所在路径中不包含有空格

5).需要为该脚本所在文件夹赋予权限

chmod 777 /Users/mdm/Desktop/ffmpeg

6).进入脚本所在文件夹目录,执行脚本

./build-ffmpeg.sh

此过程可能会出现各种问题,大多数问题可以通过前往执行脚本过程中生成的 scratch 文件夹下的 config.log 中查看对应原因。

另外,如果遇到

xcrun -sdk iphoneos clang is unable to create an executable file.
C compiler test failed.

这是由于系统安装了多个Xcode环境所致,可使用下面方法选定一个Xcode环境来解决问题:

sudo xcode-select -s /Application/Xcode.app

7).脚本执行完毕,生成所需文件

ffmpeg-3.3.6 FFmpeg源文件

scratch 编译过程中生成的文件

thin 对应各个架构下的库文件

FFmpeg-iOS 合并各个架构之后的库文件

二.集成FFmpeg到项目中

1.将生成的FFmpeg-iOS文件夹拷贝至项目中。
2.添加所需依赖的依赖库,如下:

AudioToolbox.framework

CoreMedia.framework

VideoToolbox.framework

libz.tbd

libbz2.tbd

libiconv.tbd

3.添加 Header Search Paths 设置
$(SRCROOT)/项目名/所在文件夹/FFmpeg-iOS/include

三.集成FFmpeg命令行功能

我们在使用ffmpeg时,可以直接使用该功能,通过设置命令参数,从而避免编写大量c语言代码来调用ffmpeg库。

1.找到如下文件放入同一个文件夹下,并拷贝至工程目录中:

1).从 ffmpeg-3.3.6 中找到以下文件:

ffmpeg.h

ffmpeg.c

cmdutils.h

cmdutils.c

ffmpeg_filter.c

ffmpeg_opt.c

cmdutils_common_opts.h

2).从 scratch 文件夹下随便一个架构文件夹中找到如下文件:

config.h

2.修改文件

1).前往 cmdutils.c 文件中,注释以下内容:


                
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值