核心音频指导/入门

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(使用前将#替换为@)

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

  • Dealloc 被调用两次?

    解决 感谢孤独枪手 这个问题是由于在释放许多代表之前没有将其设置为零而造成的 这是一个奇怪的 我熟悉基本的内存管理 但我认为我所看到的有些不寻常 这是一些背景 我有一个 NavigationController 来处理以下 ViewCont
  • iPhone CoreText:查找子字符串的像素坐标

    这是 Twitter 应用程序的屏幕截图供参考 http screencast com t YmFmYmI4M http screencast com t YmFmYmI4M 我想要做的是将浮动弹出窗口放置在可以跨越多行的 NSAttrib
  • UIImageView 中的视网膜/非视网膜图像

    我的应用程序中有一个 300 x 300 大小的 UIImageView 它可以很好地显示我的图像 我的图像都是 600 x 600 或更大 UIImageView 只是为我调整它们的大小 我的问题是 由于这些图像本质上都是视网膜图像 即所
  • 如何更改 Xcode 项目名称

    我已经在 iPhone 的 Xcode 中开发了我的应用程序 一开始我只是在没有 secnec 的情况下命名它 现在我想更改我的应用程序名称 我已将旧应用程序名称替换为新名称 因为我在应用程序中找到了该名称 但它仍然给我一个错误 桌面 新名
  • 在 iOS 中裁剪视频

    我们可以裁剪图像 我们可以裁剪视频吗 由于视频是图片的集合 因此您可以裁剪视频中的所有帧 然后创建新视频 AVFoundation 指南描述了一些任务 综合起来 将视频帧捕获为 UIImage 对象 https developer appl
  • 多次按下按钮时声音重叠

    当我按下一个按钮 然后按下另一个按钮时 声音会重叠 我该如何解决这个问题 以便在按下另一个声音时第一个声音停止 void playOnce NSString aSound NSString path NSBundle mainBundle
  • 将 iPhone 时间与服务器同步的最佳方法

    我有一个客户端服务器模型 其中服务器将发送一些带有日期参数的数据 iPhone 需要渲染它 服务器和 iPhone 将驻留在不同的时区 所以我需要同步两者的时间 假设用户在 07 18 2011 04 45 EDT 服务器时间 完成了一些活
  • 即使类不可用, NSClassFromString() 也会返回一个类

    我目前正在运行 iOS 4 0 的 iPhone 3G 上测试一个应用程序 我有以下代码来检查该类是否可用 if NSClassFromString CLGeocoder 在文档中 它指出 CLGeocoder 可用于 iOs 5 0 及更
  • 当 AudioSessionActive 为 NO 时,无法通过硬件按钮控制 AVAudioPlayer 的音量

    我正在构建一个路线导航应用程序 可以播放周期性的简短声音片段 无论屏幕是否锁定 声音都应该播放 应该与其他音乐播放混合 并且应该在播放此音频时使其他音乐闪避 Apple 在 29 20 分钟的 WWDC 2010 session 412 i
  • 推送通知徽章未到来

    我正在使用此编码进行苹果推送通知 推送通知即将到来 但它们没有任何徽章 任何建议此代码有什么问题 我没有收到徽章 我已经检查了设置选项卡 徽章就在那里 BOOL application UIApplication application d
  • AudioUnitInitialize 返回 -10851 (kAudioUnitErr_InvalidPropertyValue)

    假设代码是 status AudioUnitSetProperty unit kAudioUnitProperty StreamFormat kAudioUnitScope Input element format sizeof Audio
  • iOS 将音频采样率从 16 kHz 转换为 8 kHz

    我尝试将 PCM 音频从 16kHz 转换为 8kHz 只是采样率 没有格式更改 流程看起来很简单 但我不断得到kAudioConverterErr InvalidInputSize insz 来自呼叫AudioConverterFillC
  • 启动时在 iOS 中启动位置感知后台服务

    应用程序可以注册重大位置变化 推荐 重大变化的定位服务提供了 低功耗方式接收位置数据 强烈推荐用于 不需要高精度位置数据的应用 有了这个 服务 仅当用户位置时才会生成位置更新 发生显着变化 因此 它非常适合社交应用或 为用户提供非关键的 位
  • iOS-示例中的协议和委托

    好吧 我正在寻找 但没有任何方法对我有用 以下代码基于许多教程和苹果文档 但我无法让它工作 有人可以帮忙吗 代码崩溃于 obj delegatee self 在 B h 类中 respondsToSelector 和 PerformSele
  • 从时间戳间隔获取缺失的月份

    我从服务器接收时间 以秒为单位 然后使用以下代码将 tjose 秒转换为月份 NSDateFormatter dateFormatter NSDateFormatter alloc init autorelease dateFormatte
  • 如何在 iPhone 应用程序中播放来自服务器的视频 URL

    实际上 我通过使用从服务器获取一个网址XMLParser 我想在我的应用程序中播放这个视频网址 现在我使用了 MPMoviePlayerController 但它不起作用 请帮忙 XML解析器 m id loadXMLByURL NSStr
  • 有 ALAssetsLibrary 的示例吗

    对于iPhone 4来说 很多API都不能再使用了 我正在寻找 UIImageWriteToSavedPhotosAlbum 的替代解决方案 ALAssetsLibrary 是 Apple 在新 iOS 4 中提供的当前解决方案 任何人都有
  • CMSampleBufferSetDataBufferFromAudioBufferList 返回错误 12731

    我正在尝试捕获应用程序声音并将其传递给 AVAssetWriter 作为输入 我正在设置音频单元的回调以获取 AudioBufferList 问题始于将 AudioBufferList 转换为 CMSampleBufferRef 它总是返回
  • 是否可以使用UIPageControl来控制UITableView的移动?

    从Apple示例 PageControl 中我们可以知道UIPageControl可以用来控制scrollview中页面的移动 由于 UITableView 是 UIScrollView 的子类 我想使用 UIPageControl 来控制
  • 默认情况下在 MPMovies PlayerViewController 中显示字幕

    有什么方法可以在默认情况下由 MPMovies PlayerViewController 加载的电影上显示字幕吗 这部电影在视频中嵌入了字幕 谢谢你 不幸的是 这个功能在MPMoviePlayer播放类 这显然相当烦人 您应该考虑向 App

随机推荐

  • 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 中提取多个样本到数组中 然后在回调循环中 我想将这些样本混合在一起并将它们发送到扬声器 苹