前篇音视频入门记录了我对音视频的一些基础理解。现在将我在交叉编译ffmpeg之前的一些准备工作记录一下。

本文记录fdk-aac的交叉编译,首先需要说明几个问题:

基本概念

交叉编译:有过移动开发经验或者嵌入式开发经验的对这个行为应该是非常熟悉的,所谓交叉编译就是在平台A(比如电脑)上利用提供的编译链工具编译出能够运行在平台B(比如手机)的代码的整个过程。iOS提供的编译工具链就是xcode。

fdk-aac:fdk-aac是实现了aac音频编码标准的代码库,还有很多其他实现了aac标准的代码库,综合来说fdk-aac是比较好的一种实现,ffmpeg通过调用实现了aac标准的代码库来完成对音频的编解码,因此ffmpeg本身并不包含有对音频编解码的能力。它只实现对外的统一接口,内部还是需要添加相应的编解码库来完成相应操作。

交叉编译流程

首先从网址下载最新版本的fdk-aac:https://sourceforge.net/projects/opencore-amr/files/fdk-aac/

然后将相应文件解压。之后通过终端(terminal)使用cd命令进入解压后对应的文件夹。假设目前解压文件夹路径为/Users/arceushs/fdkaac

cd /Users/arceushs/fdkaac

在fdkaac文件夹内有一个configure的可执行程序,按照unix的编译流程标准,为configure配上一定的命令选项可以直接生成makefile(表明源代码文件之间的依赖关系),然后使用make命令依照makefile进行编译,最后使用make install进行安装到具体的位置。后面两步都是比较固定的,因此主要的问题其实在于configure的命令选项,使用怎么样的命令选项才能得到我们想要的功能对应的makefile。这里写一下使用的命令选项(网上有很多直接给脚本文件的,实际上最终都是运行出这些命令选项,而脚本文件其实都增大了理解的难度):

./configure \           //   \为换行连接符
--enable-static \      //编译为静态库
--disable-shared \    //关闭动态库
--host=aarch64-apple-darwin \    //编译到平台arm64  一定要写成aarch64,还有arm/i386等
CC="xcrun -sdk iphoneos clang" \        //c编译器     xcrun -sdk iphoneos clang实际上是一个具体的路径地址,代表了clang的位置。可以直接在mac终端运行或者打印出对应的位置,如果没有可以使用xcode-select --install安装,实际上这个命令就是安装使用命令行控制xcode的工具。
CXX="xcrun -sdk iphoneos clang" \     //c++编译器
CPP="xcrun -sdk iphoneos clang -E" \      //c预编译器
AS="xcrun -sdk iphoneos clang" \             //汇编器
CFLAGS="-arch arm64 -fembed-bitcode" \      //c编译器标志选项
LDFLAGS="-arch arm64 -fembed-bitcode" \       //链接标志选项
CPPFLAGS="-arch arm64 -fembed-bitcode" \     //c预编译器标志选项
--prefix="/Users/qingting/Desktop/fdk-aac-0.1.6/output/arm64"    //  最终安装到的文件目录  注意fdk这个路径貌似必须是绝对路径,暂时还没有找到为什么

完成以后就可以在目录中/Users/qingting/Desktop/fdk-aac-0.1.6/output/arm64看到编译得到的.a文件以及.h文件

音视频入门 (iOS上fdk-aac的交叉编译)相关推荐

  1. 音视频入门系列-音频篇(AAC)

    上篇文章介绍了PCM相关知识,本篇介绍下AAC相关知识. 1.什么是AAC? AAC(Advanced Audio Coding,高级音频编码)是一种声音数据的文件压缩格式.AAC分为ADIF和ADT ...

  2. 音视频入门系列-服务器篇(nginx-rtmp 的部署)

    本篇文章,我们详细介绍下使用nginx-rtmp来部署一套流媒体服务器,并用FFmpeg来推流,VLC来拉流. RTMP是Real Time Messaging Protocol(实时消息传输协议)的 ...

  3. Android 音视频入门之音频采集、编码、播放

    今天我们学习音频的采集.编码.生成文件.转码等操作,我们生成三种格式的文件格式,pcm.wav.aac 三种格式,并且我们用 AudioStack 来播放音频,最后我们播放这个音频. 本篇文章你将学到 ...

  4. 音视频入门系列-音视频基础知识篇(录播、点播、直播)

    在学习音视频技术前,笔者还是希望可以分享给小伙伴们一些音视频方便的基本概念,掌握这些概念,有助于大家对于音视频有一个更直观和清晰的了解. 话不多说,今天笔者给大家分享下:录播.点播和直播. 录播:录播 ...

  5. 吹爆系列:教科书级别的Android音视频入门进阶学习手册,学完我成功“挤进”了抖音音视频开发岗

    Android开发工作两年,真的是感觉Android应用层开发没什么前景了,于是打算在网络安全,智能硬件,音视频这几个方向发展,考虑了一段时间,最终决定选择音视频.理由就不说了,既然选择了就要好好深耕 ...

  6. 堪称教科书级别的Android音视频入门进阶学习手册,开源分享

    概述 随着整个互联网的崛起,数据传递的形式也在不断升级变化,总的流行趋势如下: 纯文本的短信,QQ -> 空间,微博,朋友圈的图片文字结合 -> 微信语音 -> 各大直播软件 -&g ...

  7. 音视频入门-02-RGB拼图

    音视频入门文章目录 图片 & 像素点 & RGB 平时浏览的图片看不出像素点: 图片放大时,可以看出图片是一个个像素点组成的: 每个像素点的颜色可以用 RGB 表示: RGB 拼图 既 ...

  8. 音视频入门之如何绘制一张图片

    Android 的音视频入门学习,首先了解一下绘制图片.在 Android 平台绘制一张图片,使用至少 3 种不同的 API,ImageView,SurfaceView,自定义 View作绘制图片.下 ...

  9. 音视频入门-10-使用libyuv对YUV数据进行缩放、旋转、镜像、裁剪、混合

    音视频入门文章目录 libyuv libyuv 是 Google 开源的实现各种 YUV 与 RGB 之间相互转换.旋转.缩放等的库.它是跨平台的,可在 Windows.Linux.Mac.Andro ...

最新文章

  1. python安卓版汉化版-手机随时随地写Python,还可以开发安卓APP,太厉害了!
  2. 【自动驾驶】3. DDS 数据分发服务(Data Distribution Service)
  3. 怎么样做一个漂亮女人
  4. 2440 8字数码管 显示0到10 c语言,51单片机对8位数码管依次显示0-7的设计
  5. python 关闭窗口事件_关于python:如何在Tkinter中处理窗口关闭事件?
  6. typora 公式对齐_都0202年了还不会用 Typora——看Typora使用教程这篇就够了
  7. python有趣小程序-第一个有趣的python小程序
  8. 如何建立网页快捷方式linux,怎么创建linux命令”快捷方式”或”自定义命令”...
  9. WINDOWS下获取目录环境变量的C代码
  10. PCB,原理图 最流行的画图画板软件有哪些?
  11. 数据库安全性之安全标准
  12. 2023年全国最新二级建造师精选真题及答案60
  13. 校招社招互联网面试经验总结
  14. 科一科四题库技巧软件源码
  15. #includelt;和#include
  16. 基于matlab的神经网络实践
  17. nginx alias php,Nginx设置alias实现虚拟目录 alias与root的用法区别
  18. 任务二:Crypto学习
  19. 【数字IC前端笔试真题精刷(2022年)】芯原——数字前端设计/验证
  20. 剖析信用卡 DCC 交易

热门文章

  1. 【李宏毅机器学习学习1】
  2. mac蓝牙键盘工具分享——通过mac键盘给iPhone、iPad打字
  3. window 使用 Edge/Chrome 调试手机 iOS 的 Safari 浏览器
  4. 编程规范 --- 可读性
  5. 读书笔记-深度学习入门之pytorch-第四章(含卷积神经网络实现手写数字识别)(详解)
  6. 面向未来:元宇宙是可望不可及的彼岸世界
  7. web应用集成WPS
  8. Elasticsearch:理解 Elasticsearch 中的 Percolator 数据类型及 Percolate 查询
  9. 利用Python脚本给图片批量添加文字水印
  10. 国瀚实业|个人如何投资理财