iOS使用FFmpeg命令行

本文介绍了如何将编译好的FFmpeg库集成到iOS项目中,详细讲解了配置步骤、命令行工具的使用以及处理进度回调的方法。通过示例代码展示了如何使用FFmpeg命令行旋转视频并保存到相册,同时提供了命令行常用参数配置的整理。

官方文档 FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它提供了录制、转换以及流化音视频的完整解决方案。 FFmpeg的代码是包括两部分的,一部分是library,一部分是tool。api都是在library里面,如果直接调api来操作视频的话,就需要写c或者c++了。另一部分是tool,使用的是命令行,则不需要自己去编码来实现视频操作的流程。

1、各模块的功能:

libavformat:用于各种音视频封装格式的生成和解析; libavcodec:用于各种类型声音、图像编解码; libavutil:包含一些公共的工具函数; libswscale:用于视频场景比例缩放、色彩映射转换; libpostproc:用于后期效果处理; ffmpeg:该项目提供的一个工具,可用于格式转换、解码或电视卡即时编码等; ffsever:一个 HTTP 多媒体即时广播串流服务器; ffplay:是一个简单的播放器,使用ffmpeg 库解析和解码,通过SDL显示;

本文主要介绍已经编译好FFmpeg库的情况下怎么集成到iOS项目中并使用FFmpeg命令,至于怎么编译教程很多我懒得贴了可以自行搜索。

2、导入iOS工程的配置及使用命令行工具的配置

1、编译成功之后会得到FFmpeg-iOS这么一个目录,里面有lib、include两个子目录,把FFmpeg-iOS直接拖进工程里\

2、添加需要的系统依赖库,Build Phases — Link Binary With Libraries,添加 libz.tbd、libbz2.tbd、libiconv.tbd、CoreMedia.framework、VideoToolbox.framework、AudioToolbox.framework

3、设置 Header Search Paths 路径,指向项目中include目录

  • 到这里command+B已经可以编译成功了,只使用FFmpeg API的话配置到这里就可以了,下面关于使用命令行的配置基于FFmpeg4.2版本,不同的版本之间可能会存在一些小的差异

4、找到源码ffmpeg-4.2/fftools目录下的这些文件导入项目中,如下图

config.h文件在ffmpeg-4.2文件夹同级的scratch文件夹中,scratch下面有不同架构的,真机选用arm64的即可

5、修改命令行工具的代码

  • 全局搜索这些头文件,有引用的地方全部注释

#include "compat/va_copy.h"
#include "libavresample/avresample.h"
#include "libpostproc/postprocess.h"
#include "libavutil/libm.h"
#include "libavutil/time_internal.h"
#include "libavutil/internal.h"
#include "libavformat/network.h"
#include "libavcodec/mathops.h"
#include "libavformat/os_support.h"
#include "libavutil/thread.h"
  • ffmpeg.c文件中,注释下面的函数调用 并导入系统头文件 #include <pthread.h>

nb0_frames = nb_frames = mid_pred(ost->last_nb0_
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值