gpt4 book ai didi

ios4 - 核心音频指导/入门

转载 作者:行者123 更新时间:2023-12-05 00:39:50 25 4
gpt4 key购买 nike

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

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

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

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

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

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

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

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

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

最佳答案

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

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

  • 使用 ExtendedAudioFile(在 AudioToolbox 框架中声明)读取 mp3。顾名思义,它扩展了 AudioFile 的功能。 IE。您可以为 eaf 分配音频流格式 (AudioStreamBasicDescription),当您从中读取时,它将为您转换为该格式(为了进一步处理音频单元,您使用格式 ID 'kAudioFormatLinearPCM' 和格式标志 'kAudioFormatFlagsAudioUnitCanonical') .
  • 然后,您使用 ExtAudioFile 的 'ExtAudioFileRead' 将转换后的音频读入一个 AudioBufferList 结构体,该结构体是一个 AudioBuffer 结构体(均在 CoreAudio 框架中声明)的集合,每个 channel 一个(通常为两个)。查看文档音频部分中的“核心音频数据类型引用”,了解 AudioStreamBasicDescription、AudioBufferList 和 AudioBuffer 等内容。
  • 现在,使用音频单元来播放和混合文件,这并不难。音频单元似乎是“大事”,但实际上并非如此。查看“AudioUnitProperties.h”和“AUComponent.h”(在 AudioUnit 框架中)以了解可用音频单元的描述。查看文档中的“iOS 音频单元托管指南”。这里唯一的问题是 iOS 没有音频文件播放器单元...如果我没记错的话,您必须手动为音频单元提供样本。
  • 音频单元存在于 AUGraph(在 AudioToolbox 框架中声明)中,并且像音频硬件一样通过接线盒互连。该图还为您处理音频输出。您可以查看有关此的“PlaySoftMIDI”和“MixerHost”示例代码(实际上,我刚刚再次查看了 MixerHost,我认为,这正是您想要做的!)。

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

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

    希望,所有这些都会有所帮助!祝你好运,
    塞巴斯蒂安

    关于ios4 - 核心音频指导/入门,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4173637/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com