核心音频指导/入门

2024-04-22

我一直在阅读 ios 4 的核心音频,目的是构建一个小测试应用程序。

目前我对所有 api 的研究感到非常困惑。理想情况下,我想知道如何从两个 mp3 中提取多个样本到数组中。

然后在回调循环中,我想将这些样本混合在一起并将它们发送到扬声器。

苹果开发网站上有一些示例,但我发现它们很难剖析和消化。有人知道某个地方有一个很好的精简示例吗?

我也无法确定要使用哪个 api。

有扩展音频文件和音频文件。这些似乎是用于提取音频的。我应该使用哪一个?

绝对有必要使用混合单元,或者我最好做我自己的混合代码(我想要尽可能多的样本控制)。

我需要使用音频队列服务吗?我听说它们的延迟很差,这是真的吗?

最后我必须使用音频会话服务。如果没有它,音频应用程序还能工作吗?音频会话如何适应整个音频提取和回调?纯粹只是为了处理中断吗?


在过去的几年里,Core Audio 的文档已经有了很大的改进,但仍然不完整,有时令人困惑,有时甚至是错误的。而且我发现框架本身的结构相当混乱(AudioToolbox、AudioUnit、CoreAudio,...什么是什么?)。

但我对解决你的任务的建议是这样的(警告:我没有在 iOS 中完成以下操作,仅在 MacOS 中完成,但我认为大致相同):

  1. 使用 ExtendedAudioFile (在 AudioToolbox 框架中声明)读取 mp3。正如其名称所示,它扩展了 AudioFile 的功能。 IE。您可以将音频流格式 (AudioStreamBasicDescription) 分配给 eaf,当您从中读取时,它会为您转换为该格式(为了进一步处理音频单元,您可以使用格式 ID 'kAudioFormatLinearPCM' 和格式标志 'kAudioFormatFlagsAudioUnitCanonical') 。

  2. 然后,您使用 ExtAudioFile 的“ExtAudioFileRead”将转换后的音频读入 AudioBufferList 结构,该结构是 AudioBuffer 结构的集合(均在 CoreAudio 框架中声明),每个通道一个(通常是两个)。查看文档音频部分中的“核心音频数据类型参考”,了解 AudioStreamBasicDescription、AudioBufferList 和 AudioBuffer 等内容。

  3. 现在,使用音频单元来播放和混合文件,这并不难。音频单元看似“大事”,但实际上并非如此。查看“AudioUnitProperties.h”和“AUComponent.h”(在 AudioUnit 框架中)以获取可用音频单元的描述。查看文档中的“iOS 音频单元托管指南”。这里唯一的问题是没有适用于 iOS 的音频文件播放器单元...如果我没记错的话,您必须手动向音频单元提供样本。

  4. 音频单元位于 AUGraph(在 AudioToolbox 框架中声明)中,并通过插线板像音频硬件一样互连。该图还为您处理音频输出。您可以查看与此相关的“PlaySoftMIDI”和“MixerHost”示例代码(实际上,我刚刚再次查看了 MixerHost,我认为这正是您想要做的!)。

经验法则:查看头文件!它们提供比文档更完整和准确的信息,至少这是我的印象。查看上述框架的标头并尝试熟悉它们会有很大帮助。

此外,还将有一本关于 Core Audio 的书(Kevin Avila 和 Chris Adamson 的“Core Audio”),但尚未发布。

希望这一切能有所帮助!祝你好运, 塞巴斯蒂安

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

核心音频指导/入门 的相关文章

  • iOS - 恢复自动续订订阅

    我正在实施自动更新订阅 我有以下问题 订阅内容过期后 用户还能恢复吗 如果是这样 我如何验证它们并让它们下载 Look at 恢复自动续订订阅 https developer apple com library ios documentat
  • GPS 坐标(以度为单位)来计算距离

    在iPhone上 我以十进制度数获取用户的位置 例如 纬度39 470920和经度 0 373192 也就是A点 我需要用另一个 GPS 坐标 同样以十进制表示 B 点创建一条线 然后 计算从 A 到 B 的线与另一个点 C 之间的距离 垂
  • 在 iOS 中裁剪视频

    我们可以裁剪图像 我们可以裁剪视频吗 由于视频是图片的集合 因此您可以裁剪视频中的所有帧 然后创建新视频 AVFoundation 指南描述了一些任务 综合起来 将视频帧捕获为 UIImage 对象 https developer appl
  • OS X / iOS - 使用 AudioConverterFillComplexBuffer 进行缓冲区的采样率转换

    我正在为一个项目编写一个 CoreAudio 后端名为 XAL 的音频库 http libxal googlecode com 输入缓冲器可以具有不同的采样率 我使用单个音频单元进行输出 想法是在将缓冲区发送到音频单元之前对其进行转换和混合
  • 消除录音曲目中当前播放曲目的声音

    我希望使用远程 IO 进行音频录制和播放 我对核心音频的理解很差 因为我遵循惊人的音频开源 http theamazingaudioengine com 到目前为止 我可以使用相同的代码进行录制和播放 现在我尝试通过麦克风录制并通过 iPh
  • 如何使用 afconvert 将 .caf 转换为 .mp3 格式? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在使用 afconvert 命令行实用程序来转换音频文件 caf to mp3格式 我用过afconvert afconvert f
  • 循环 AVMutableCompositionTrack

    我身上有两个音轨 我将它们相互组合起来 如下所示 AVMutableComposition composition AVMutableComposition alloc init AVMutableCompositionTrack comp
  • 从 iOS4 在后台发布位置更新

    我可以从 iOS4 在后台向我的服务器发送位置更新吗 我想要获取用户位置更改并使用 Web 服务调用将其发布到服务器 这里的主要问题是 当应用程序在后台时是否可以调用网络服务或http post 绝对可以 而且您可能想要回顾一下之前的帖子
  • 获取iPhone照片库的图像名称

    我正在做一个项目 从 iPhone 照片库或以其他方式从相机胶卷中获取图像 我已经做到了 没有任何问题 但我需要从照片库中检索名称 有没有办法做到这一点 任何帮助表示赞赏 Thanks 查看 ALAssetsLibrary 它在 iOS 4
  • 推送通知徽章未到来

    我正在使用此编码进行苹果推送通知 推送通知即将到来 但它们没有任何徽章 任何建议此代码有什么问题 我没有收到徽章 我已经检查了设置选项卡 徽章就在那里 BOOL application UIApplication application d
  • Swift 与 Objective C 指针操作问题

    我在 Objective C 中有这段代码 运行良好 list controller gt audioBufferList list gt mBuffers 0 mDataByteSize inNumberFrames kSampleWor
  • 我们如何以编程方式检测设备正在运行哪个 iOS 版本? [复制]

    这个问题在这里已经有答案了 我想检查用户是否在低于 5 0 的 iOS 上运行应用程序并在应用程序中显示标签 如何以编程方式检测用户设备上正在运行哪个 iOS Thanks 当前最佳版本 不需要在 NSString 中处理数字搜索就是定义m
  • HTML5 音频在 iOS 4 上的限制?播放列表、背景等

    我一直在 iOS 4 上评估 HTML5 音频 并试图了解它的局限性 据我所知 可以在后台播放音频 It is not可以在赛道完成后在后台触发 JavaScript 事件 屏幕关闭时可以触发 JavaScript 事件 但 Safarim
  • 如何在 iPhone iOS 4 中设置 UITableViewCell 样式副标题文本对齐方式居中?

    自从使用 iPhone SDK 4 将 XCode 升级到版本 3 2 3 后 我的代码不再工作 我有一个带有样式的默认单元格UITableViewCellStyleSubtitle并想要设置textAlignment of textLab
  • popToRootViewControllerAnimated 不显示根视图控制器

    我需要一些关于导航控制器问题的帮助 我有一个navigationController with 4 ViewControllers推 我推的最后一个 vc 提出了进一步的ViewController模态地 模态ViewController提
  • 一种简单、干净的方式来切换/交换视图?

    我已经看了几个来源 但我仍然很困惑 我想创建一个具有多个视图的应用程序 只有标准视图 没有表视图或其他任何内容 我可以在其中单击每个视图上的按钮来访问其他视图 我已经看到了多种方法来做到这一点 但对我来说唯一有意义的方法是让应用程序委托负责
  • 有 ALAssetsLibrary 的示例吗

    对于iPhone 4来说 很多API都不能再使用了 我正在寻找 UIImageWriteToSavedPhotosAlbum 的替代解决方案 ALAssetsLibrary 是 Apple 在新 iOS 4 中提供的当前解决方案 任何人都有
  • 强制向扬声器发出音频警报

    我有一个小应用程序 在此应用程序中 扬声器每隔我设置的特定时间就会发出噪音 现在 我希望即使设备中插入了耳机插孔 它也能通过内置扬声器发出噪音 我怎样才能做到这一点 您可以尝试以下代码在扬声器上播放代码 另请检查this http uiha
  • iOS 4.3 上的cameraOverlayView 问题

    我使用带有cameraOverlayView的选择器控制器在相机视图中显示产品的图像 在应用到覆盖层之前 产品图像会调整大小 它在 iOS 4 2 上运行良好 但在 iOS 4 3 上产品图像显示为全尺寸 pickerController
  • 使用核心电话发送短信?

    我想开发一个像biteSMS这样的应用程序 适用于越狱的iPhone 我尝试编译一个开源应用程序iPhone 交货报告 http code google com p iphone delivery report 但无法编译它 有人知道与越狱

随机推荐

  • iframe 中元素的 CKEditor 内联编辑器

    在应用程序中 我在 iframe 中有内容可编辑元素 并且希望将内联 CKEditor 应用于这些元素 它可以工作 除非我滚动 iframe 时 CKEditor 工具栏不会随之滚动 是否有特殊标志或某种方法可以让工具栏随 iframe 内
  • MediaElement 冻结视频

    我应用一些LinearGradientBrush动画到MediaElement在这段视频冻结之后 我尝试通过重置它Player1 OpacityMask null 但没有喜悦 顺便说一句 如果我制作动画Opacity of the Medi
  • Django:仅记录我项目的应用程序

    默认情况下 我可以在 settings py 中启用日志记录LOGGING通过创建记录器进行配置 这将捕获所有日志 但是 如果我只想查看项目应用程序的日志记录而不是 Django 内部的日志记录 该怎么办 我可以想象在我的每个 Django
  • SVG:一个过滤器中的多种效果

    我正在尝试在单个 SVG 过滤器中实现多个阴影 但我相信我的问题比这更通用 如何将多种效果添加到单个 SVG 滤镜中 就我而言 这就是我具体想做的事情 我有一个当前包含单个路径元素的 SVG 文档 并且我已对该路径元素应用了单个阴影效果 我
  • 如何使用 JavaScript 检测 Internet Explorer (IE) 和 Microsoft Edge?

    我环顾四周 了解到有很多方法可以检测 Internet Explorer 我的问题是这样的 我的 HTML 文档上有一个区域 单击该区域时 会调用与任何类型的 Internet Explorer 都不兼容的 JavaScript 函数 我想
  • 将node.js neDB数据获取到变量中

    我能够在nodejs 中的neDB 数据库中插入和检索数据 但我无法将数据传递到检索 数据的函数之外 我已经阅读了 neDB 文档 并且搜索并尝试了回调和返回的不同组合 请参阅下面的代码 但没有找到解决方案 我是 javascript 新手
  • Eclipse 模拟器中的屏幕尺寸

    我正在看一个简单的例子 我正在使用 Eclipse 当我单击 运行 工具栏图标时 会显示我的应用程序启动屏幕 正如我所希望的那样 但整个 droid 模拟器太大 太大 我搜索了一下 发现应该去Window Android SDK and S
  • 使用复选按钮禁用小部件?

    我如何使用复选按钮禁用条目 我得到了这个 但它不起作用 python 2 7 1 usr bin env python2 7 coding utf 8 from Tkinter import root Tk class Principal
  • 使用 GsmCellLocation 的 getPsc() 始终返回 -1

    我成功得到了GsmCellLocation以及相关的 cid 和 lac 信息 但服务小区的 PSC 主扰码 总是以初始化值 1 返回 有人能得到服务小区的真实 PSC 值吗 telephonyManager TelephonyManage
  • 不可变数据结构性能

    我不明白作为一个集合的东西怎么可能是不可变的并且仍然具有可接受的性能 根据我在 F Sets 中读到的内容 内部使用红黑树作为其实现 如果每次我们想要向红黑树添加新内容时 我们基本上都必须重新创建它 那么它如何才能具有良好的性能呢 我在这里
  • 如何通过注册表查找sql​​ server实例的版本和版本

    我正在使用下面的注册表搜索来获取所有 sql server 实例名称的列表 HKEY LOCAL MACHINE SOFTWARE Microsoft Microsoft SQL Server 实例名称 SQL 我如何获得上述注册表搜索返回
  • 何时在 odoo 中使用 api.one 和 api.multi |打开程序?

    最近odoo 以前的OpenERP V8已经发布了 在新的 API 方法中引入了装饰器 在models py方法需要修饰 api one or api multi 参考odoo 文档 https www odoo com documenta
  • 为什么我的模型在帖子中丢失下拉列表项目?

    我有一个简单的页面 mvc 只有一个操作 在索引操作中的 Get 方法中 我创建了属性 model categoria 的实例 并使用 3 个项目进行值 问题是 如果我运行操作的后索引 如下所示 则会出现错误 因为与 model categ
  • Ruby 数组each_slice_with_index?

    如果我有arr 1 2 3 4 我知道我可以做以下事情 gt arr each slice 2 a b puts a b 1 2 3 4 和 gt arr each with index x i puts i x 0 1 1 2 2 3 3
  • java 8 可选列表收集以列出编译错误

    我无法理解之间的区别 Stream
  • 为什么使用 ASP.NET MVC 部分视图 (.ascx)

    正如题目所说 我为控制器方法添加视图的原因和场景是什么 我应该选中 创建部分视图 ascx 复选框 两个主要原因是可重用性和可读性 如果您计划在多个页面中包含相同的信息 请将其放入视图中 就像在 WebForms 中使用 UserContr
  • 为什么pivot_wider要么将单个值读取为重复项,要么创建一个宽而长的小标题(不合并行)?

    我浏览了此处发布的大部分相关问题 但似乎没有一个问题与我面临的问题相同 根据我的阅读 此处已经发布的问题与长格式数据中的重复值 缺乏唯一标识符 有关 这会导致带有列表列的宽格式数据 这通常可以通过创建虚拟变量列来解决这是一串唯一的数字 我已
  • JTable JComboBox 第一项名称错误

    我添加了一个摇摆JComboBox to a JTable 但我的第一个项目的标签始终是javax swing JComboBox 我究竟做错了什么 更新 这是我的代码 import java awt Color import java a
  • 如何让 Pool.map 采用 lambda 函数

    我有以下功能 def copy file source file target dir pass 现在我想用multiprocessing立即执行此函数 p Pool 12 p map lambda x copy file x target
  • 核心音频指导/入门

    我一直在阅读 ios 4 的核心音频 目的是构建一个小测试应用程序 目前我对所有 api 的研究感到非常困惑 理想情况下 我想知道如何从两个 mp3 中提取多个样本到数组中 然后在回调循环中 我想将这些样本混合在一起并将它们发送到扬声器 苹