TheAmazingAudioEngine:一个iOS音频处理框架

theamazingaudioengine

The Amazing Audio Engine 是一个适用于 iOS 音频应用的成熟框架,无需自己创建。

它非常容易上手,可以处理 iOS 音频方面各种纷繁复杂的方面。

它是基于高效低延迟的 Core Audio 远程输入输出系统,由 Audiobus 和 Loopy 的开发者 Michael Tyson 创建的。可以让你免于重复造轮子。

主要特点

  • 使用对象,块或者音频单元和循环音频文件播放器来轻松创建现场音频内容
  • 具备单个频道音量和平移控件的自动多音频信号混合
  • 内置的音频滤波和音频效果支持,以及音频单元,块或者对象过滤器支持
  • 丰富的音频输入支持以及成熟的多频道支持
  • 深入Audiobus的跨应用的音频系统支持
  • 用于app内部会话录制和分析的,成熟的系统输出记录和监控
  • 支持所有的音频格式:交错,非交错,单声道,立体声,16位,浮点 — 任何你需要的格式
  • 内置音频文件读写功能,支持所有Core Audio支持的格式
  • 支持基于定时和报警机制的极其精确的时间戳
  • 轻量高效的C引擎,从底层到高层都为了追求速度而进行的设计
  • 主线程和音频线程之间快速、无锁同步
  • 带有示例代码的高质量文档以及拥有开发者论坛

示例代码

以块的方式添加频道

添加两个循环的音频文件轨道

创建一个过滤器并将其加入轨道

创建一个音频单元并将其用于筛选app的音频

开发资源

许可证

Copyright (C) 2012-2015 A Tasty Pixel

本软件就是这个样子,没有任何明示或暗示的保证。在任何情况下,作者都不对使用本软件产生的任何损害承担责任。

该软件可用于任何目的,包括商业应用,可以随意更改,并重新创建分支,但有下面几点限制:

  1. 该软件的起源不得被扭曲,你不能说是你写的原创软件。如果用于相关产品,在产品文件中进行相关声明不是必须的,如果有的话非常感谢。
  2. 修改源代码版本,必须有明显的标记,不应作为自己的原创软件。
  3. 任何源分发都不能被删除或更改此通知。

变更日志

当前正在开发 1.5.8

  • 修复在快速添加/移除频道时候可能导致的崩溃

1.5.7

1.5.6

  • 将内部使用的同步线程信息传递替换为异步信息传递,避免死锁以及其他时序问题
  • 修复输入格式改变可能引起的崩溃
  • 观察音频单元流的格式改变,以便于更好应对样本率变化
  • 实现 AEMessageQueue 中的信息交换块

1.5.5

  • 添加了 AEAudioBufferManager类,可以通过普通的ARC/保留释放内存管理技术来管理AudioBufferList结构
  • 定位了 1.5.3 中产生的问题,可能在重启音频系统时,导致程序挂起30秒
  • 使用 Audiobus/IAA 修改时间戳管理:现在,通过 IAA 或者 Audio’s,TAAE 可以向 ABReceiverPortReceive 传输补偿时间戳,并且假定接收的时间戳都补偿上了

1.5.4

  • 修复了通过跨应用音频托管时候的输出延迟补偿问题
  • 废用 audiobusSenderPort 方法(使用 ABSenderPort’s audioUnit 初始方法进行替换, 以及 AEAudioController’s 的audioUnit 属性)
  • 改进了性能报告(更简洁,添加了渲染预算百分比)
  • 修复了在使用 AEPlaythroughChannel 以及改变样本率时候的崩溃

1.5.3

  • 添加了 AEAudioBufferListCreateOnStack utility
  • 默认开启 automaticLatencyManagement
  • 修复一个使用 setAudiobusSenderPort* 时候的竞争状况
  • 添加了 tvOS 支持(感谢 Florian Doyon)
  • AEMemoryBufferPlayer 中添加了 playAtTime: 方法(感谢 Anton Holmberg)
  • 为输入的过滤器修复了遗忘的 setup/teardown 调用
  • 替换了 AEPlaythroughChannel 初始方法

1.5.2

  • 添加了复合的 setAudioDescription:inputEnabled:outputEnabled: 更新方法
  • 添加了新的初始化功能与AEAudioControllerOptions 位掩码(感谢 Jonatan Liljedahl)
  • 添加了始终使用硬件采样率的设置(感谢 Jonatan Liljedahl)
  • 为频道和过滤器添加了遗忘的 teardown 过程
  • 修复了错误的音频输入转换为交错格式
  • 修复了 AEAudioUnitFilter 的转换问题
  • 通过移除 OSX 中的 AEReverbFilter 修复了 OSX 中的创建问题(OSX 中不支持 AEReverbFilter)
  • 在 ABAudioUnitFilter/Channel 中添加了 audioGraphNode 属性
  • 通过添加安全方法更新了 TPCircularBuffer,这个安全方法,是在你的项目中的其他实例检测到版本不匹配情况下,会拒绝编译或者过早崩溃。
  • 通过接收和过滤端口定位了 app 中的 Audiobus 问题

1.5.1

  • 为iPhone6S 做的重大修改
  • 添加了一些 AudioStreamBasicDescription utilities
  • 添加了额外的 AudioBufferList utilities 并重新命名了一些惯有的命名
  • 对苹果的 effect audio units 添加了封装类(谢谢Dream 的工程师 Jeremy Flores)
  • 添加了Audio Unit 参数设置方法(setParameterValue:forId: 和 getParameterValue:forId:)
  • 添加了AEMemoryBufferPlayer(替换了先前的内存类 AEAudioFilePlayer )
  • 在AEAudioFilePlayer中添加了 playAtTime: 同步方法
  • 将线程间通讯系统重构为 AEMessageQueue(感谢 Jonatan Liljedahl!)
  • 将’updateWithAudioDescription:…’ 机制分为了’setAudioDescription’, ‘setInputEnabled’ 和’setOutputEnabled’
  • 还有一些小的改进,具体看 git 日志

1.5

  • OSX 也支持了!非常非常感谢 Steve Rubin!
  • 将 AEAudioFilePlayer 内存版本替换成了一个从磁盘流入的音频单元版本(感谢 Hello World Engineering的Ryan King,Jeremy Huff,以及Ryan Holmes,非常感谢他们为这个大提升做的贡献)
  • 还有一些小的改进,具体看 git 日志

官方网站:http://theamazingaudioengine.com
开源地址:https://github.com/TheAmazingAudioEngine/TheAmazingAudioEngine

1 2 收藏

资源整理者简介:西西里的仔仔

简介还没来得及写 :) 个人主页 · 贡献了12个资源 · 13 ·   


直接登录

推荐关注

按分类快速查找

关于资源导航
  • 伯乐在线资源导航收录优秀的工具资源。内容覆盖开发、设计、产品和管理等IT互联网行业相关的领域。目前已经收录 1438 项工具资源。
    推送伯乐头条热点内容微信号:jobbole 分享干货的技术类微信号:iProgrammer