iOS 编译ffmpeg 4.3版本

news2024/11/25 14:57:02

嗨,咱就是说,音视频这玩意是真的有些难度啊,不说后续学习路线会有多坎坷,就第一步编译这个破库就折磨了我两天多,好好的一个周末就浪费在编译上了。

入门这事儿,我是先看了《音视频开发进阶指南:基于Android与iOS平台的实践》这本书,第二章就讲到了如何对所需要的音频和视频库进行交叉编译,这本书我是在微信读书上面看的(里面做编译的makefile建议不要用,在网上找编译脚本就好了)

首先,虽然ffmpeg可以做音视频的编解码,但是,如果需要更加细分的比如说音频的AAC格式,视频的H.264/H.265这一类的编解码,还是需要把一些第三方库(fdk-aac , x264,x265等)一起打包编译进去的,但是这一步,我没有成功,我试了很多种方法,都提示无法找到这个第三方类库,很难,所以我就先直接裸编ff库了,如果日后能把这些三方库编译进去,我会把结果和步骤新增在这篇文章里。

首先,准备编译脚本 :iOS编译脚本 build-ffmpeg.sh
我用的就是这个脚本,好理解,但是需要根据不同的情况去对脚本进行相应的修改。

其次,编译这个库还需要一个这个脚本
下载、解压、打开文件夹,会看到一个gas-preprocessor.pl文件,把gas-preprocessor.pl文件拷贝一份到/usr/local/bin/ 目录下,然后为文件gas-preprocessor.pl开启可执行权限,打开终端,输入命令:

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

其实build那个脚本也会自动检测所必须的库和文件是不是已经准备好,如果没有准备好,脚本会自动执行下载操作。

我对build脚本做了一些修改
首先,可能是因为xcode版本过高的原因(我用的是12.5.1版本),所以编译armv7 i386这两种架构的clang工具已经不可用,所以,我删除了目标架构的编译

ARCHS="arm64 x86_64" (也就是64位架构机型,基本可以满足现在的需求了)

还有一个地方,如果需要编译过程的log日志的,需要手动在编译指令中添加 --logfile=${FILENAME} (前提是先创建好这个log文件)
如果有需要了解指令集的,可以在目录下执行 ./configure --help 来列出所有支持的指令

--logfile="$CWD/ffbuild/config.log" 

前往github下载ffmpeg源码,将build脚本拖入源码目录下,并开始执行脚本

圆圈圈出来的就是编译并合并好的可以供iOS使用的ffmpeg库
圆圈圈出来的就是编译并合并好的可以供iOS使用的ffmpeg库

.a文件
在这里插入图片描述
头文件
在这里插入图片描述

打开xcode项目,将FFmpeg-iOS文件夹整体拖到项目中去请添加图片描述

对项目引用库进行管理

首先,前往Target->Build Phases->Link Binary With Libraries中,将.a文件和其它依赖库添加进来请添加图片描述
其次,前往Build Setting->Search Path->Library Search Path 将类库的路径添加进去请添加图片描述

对头文件进行管理

前往Build Setting->Linking->Other Linker Flags 将类库名称添加进去

-lavformat
-lavcodec
-lavutil
-lavdevice
-lavfilter
-lswresample
-lswscale

配置头文件路径
前往Build Setting->Search Path->Header Search Path 将类库的路径添加进去
请添加图片描述

完成

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/584755.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue3基于 rem 比例缩放方案

本缩放方案置于hooks中即可。于App.vue中引入并调用。会在页面DOM结构最外层增加响应式的font-size属性样式更改。 主要包含了以下内容 接口和类型定义: DesignParms:设计稿参数的接口定义,包括宽度、高度和字体大小等信息。UseRemOption&…

Hack The Box - appointment关卡

TASK 1 任务 1 What does the acronym SQL stand for? 首字母缩略词SQL代表什么? Structured Query LanguageTASK 2 任务 2 What is one of the most common type of SQL vulnerabilities? 最常见的 SQL 漏洞类型之一是什么? SQL Injection TASK …

两天,总计六个小时,中移在线核心业务系统顺利完成1050套欧拉操作系统迁移上线...

摘要:历时两天,总计六个小时,中国移动在线营销服务中心(简称中移在线)正式启动内部核心业务系统全网呼叫平台的迁移工作。首批1050套操作系统完成从 CentOS(系统版本7.2、7.4和7.6)到 openEuler 高效平滑迁移。中移在线拥有全球最大的呼叫平台…

「实在RPA·交通物流数字员工」促进数字化转型加「数」度

一、交通物流行业数字化转型的重要性 作为国家和地区相连接的枢纽,交通物流行业在国民生活中扮演着重要的角色。经济的发展以及电商行业的迅速崛起使得交通物流业的重要作用更加凸显。随着5G技术、大数据云计算、机器人流程自动化的迅速发展,以及交通强…

文件传输只是第一步,文件同步和备份的关键是

有备无患,“备份”的观念早已深入所有信息管理人员的心里。在IT人员信息化安全计划中备份是不可或缺的重要环节。然而,我们还是会经常听到客户抱怨数据备份太慢,文件传输会出现丢失、异常、损坏的情况。那这到底是备份方式有问题还是人员疏忽…

【初识Java之类和对象】

目录 1.什么是面向对象2.类的定义和使用3.类的实例化3.1类的实例化3.2 类的引用 4.This引用5.成员变量 1.什么是面向对象 ava是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。 面向对象是解决问题…

Pandas 加载数据的方法和技巧

Pandas 加载数据的方法和技巧 哈喽大家好,我是咸鱼 相信小伙伴们在学习 python 数据分析的过程中或多或少都会听说或者使用过 pandas pandas 是 python 的一个拓展库,常用于数据分析 今天咸鱼将介绍几个关于 pandas 导入数据的方法和技巧 从 URL 获…

【JavaSE】Java基础语法(三十一):可变参数

文章目录 1. 可变参数2. 创建不可变集合 1. 可变参数 可变参数介绍 可变参数又称参数个数可变,用作方法的形参出现,那么方法参数个数就是可变的了方法的参数类型已经确定,个数不确定,我们可以使用可变参数 可变参数定义格式修饰符 返回值类型 方法名(数…

【独立版】智慧城市同城V4_2.2.7全开源全插件VUE版,修复房产信息组件商户发布二手房房源信息未和商户关联的问题

源码介绍 【独立版】智慧城市同城V4 查看更多关于 智慧城市同城V4 的文章 _2.2.7全开源全插件VUE版,修复房产信息组件商户发布二手房房源信息未和商户关联的问题! 智慧城市同城是一套专注于多城市生活服务同城技术解决方案,全面覆盖同堿信息、商家联盟、…

端口扫描工具-Nmap

Nmap是一款功能强大,功能丰富的网络扫描工具,对于网络管理员和安全专业人员来说,是一个非常有用的工具,并且被广泛应用于安全审计、网络调查、漏洞搜寻等领域。 (能扫描主机的端口,查看端口是否开放&#x…

智慧物流货运系统源码,网络货运平台系统源码,货运系统开发源码部署

一套结合货主、平台、实际承运人多方业务场景,构建人、车、货、企一体的标准化网络货运平台系统源码。 文末获取联系 平台服务于货主与司机,进行服务对接,为货主节省时间找车,为司机找货获得利润。 货主端:货车主在线发…

GPT模型支持下的Python-GEE遥感云大数据分析、管理与可视化

随着航空、航天、近地空间等多个遥感平台的不断发展,近年来遥感技术突飞猛进。由此,遥感数据的空间、时间、光谱分辨率不断提高,数据量也大幅增长,使其越来越具有大数据特征。对于相关研究而言,遥感大数据的出现为其提…

室内外大型商演、体育赛事观赏防雷指南

前言 随着社会的发展,人民生活水平的提高,生活方式的改变,户外颇具规模的各种集会、商演、大型文体及体育活动等举办频次越来越频繁,持续时间越来越长,有的集会持续数天甚至十几天,因此需要采取全方位的防…

DUMPBIN查看dll函数定义 及MFC常用 生成一个C# C++等任意语言都能调用的dll

DUMPBIN /EXPORTS "C:\Windows\System32\uxtheme.dll" /EXPORTS 导出的所有定义。(这里的定义应该就是指的函数名吧) dumpbin.exe是微软二进制文件转储器。显示有关通用对象文件格式 (COFF) 的二进制文件的信息。 可以使用 DUMPBIN 检查 COFF 对象文件、 COFF 对象、…

2023年上半年系统集成项目管理工程师上午真题及答案解析

1.在( )领域我国远末达到世界先进水平,需要发挥新型国家体制优势,集中政府和市场两方面的力量全力发展。 A.卫星导航 B.航天 C.集成电路 D.高铁 2.ChatGPT 于2022年11月30日发布,他是人工智能驱动( )。 …

NFTScan | 05.22~05.28 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期:2023.05.22 ~ 2023.05.28 NFT Hot News:NFT 热点资讯 01/ 数据:24 小时内两巨鲸共抛售 349 枚 MAYC NFT 5 月 22 日,Debank 数据显示,近 …

如何将数据从旧电脑传输到新电脑,哪种文件传输方式更好

迁移到新的Windows 10 电脑是一个令人兴奋的时刻,尤其是如果您有幸从我们现在可用的最佳Windows笔记本电脑列表中选择一个选项。问题是您熟悉的文件位于旧电脑上,并且您不想重新开始。为了简化电脑之间的转换,可以使用以下七种方式进行文件传…

Top大学教授:青年学者,请避免这些写作问题→

在科研初期,很多作者由于缺乏经验和指导,糊里糊涂地发了一些质量较低的论文。 为了帮助青年科学家提高写作能力,比利时鲁汶大学的Blocken教授(同时也是Building & Environment、Journal of Wind Engineering & Industrial…

Linux第三天

man手册一般用于工具 比如nmap lsblk :查看光盘内容 //说明还没被挂载 //在 /etc/fstab vim中进行开机挂载 yum repolist -v //查看软件安装的历史列表

【编写UI自动化测试集】Appium+Python+Unittest+HTMLRunner​

简介 获取AppPackage和AppActivity 定位UI控件的工具 脚本结构 PageObject分层管理 HTMLTestRunner生成测试报告 启动appium server服务 以python文件模式执行脚本生成测试报告 下载与安装 下载需要自动化测试的App并安装到手机 获取AppPackage和AppActivity 方法一 有源码…