从Core Audio框架开始

对于我打算很快启动的项目,我将需要播放压缩和未压缩的音频文件。 为此,我打算使用Core Audio框架。 但是,我之前没有音频编程经验,我真的不知道从哪里开始。 是否有任何初学者级资源或示例项目可以演示如何使用Core Audio构建简单的音频播放器?

刚刚出现了关于Core Audio的书的预览 。 我已经开始阅读它,作为一个初学者,我觉得它很有帮助。

它有一个教学风格的教学方法,并在其解释中非常清楚。 我强烈推荐它。

虽然这个问题已经得到了回答..我想补充一些提示,因为我几个月来一直在努力解决同样的问题:

  • 这是我根据学习核心有声书上的示例代码创建的一个非常简单的示例代码。

  • Matt Gallagher音频流教程是必须的.​​.除了提供流媒体直播的优秀示例..它还提供了一个简单的multithreading示例..这将带我到下一个非常重要的点

  • 在Apple的并发指南中……他们建议不要使用multithreading..并给你一些建议,如GCD和NSOperations等等。当谈到核心音频时,不是一个好的想法..至少是实时音频.. b / c实时音频对任何类型的阻塞或昂贵的操作都非常敏感。超出你的想象(即使有时甚至简单的NSLog语句都可以使音频分解甚至完全没有播放!!) 这是一个关于这个的不可或缺的读物音频的一部分。

  • 音频编程是一种不同于我们大多数人习惯的编程。 因此,花点时间去理解概念……其中很多都需要时间来吸收…例如音频文件格式和音频流格式之间的区别..压缩音频和PCM(非压缩)音频之间的区别..例子比比皆是。

  • 一个关键点让我理解:访问iPad库中的音频文件..读取它们的唯一方法是通过AVAssetReader API方法.. 而不是通过其他API,如AudioFileReadPackets等..(尽管如果你存储一个文件在你的项目中手动..然后你可以).. AVAssetReader比其他API更不方便用户..但一旦核心音频的概念沉入..你将找不到太大的区别..我的示例使用AVAssetReader

  • 看看我和Justin 在这里讨论过的问题……你会看到我陷入困境的很多陷阱,你会明白如何避免它们。 请记住,特别是使用Core Audio ..它不是要知道如何解决问题……而是要知道首先要解决什么问题。

  • 如果您或任何其他人对核心音频有任何疑问,请随时写一个关于堆栈溢出的问题,并通过评论我自己的一个问题指出我,只是为了引起我的注意..我’社区在这里得到了很多帮助,我真的想提供帮助作为回报

在花了很长时间试图找出与你类似的问题后,我写了一些示例代码。

示例代码允许用户从他们的iPod库中选择一首歌曲,然后创建该文件的未压缩(LPCM)副本(使用AVAssetReader / AVAssetWriter),并使用AudioUnit(它是CoreAudio的一部分)播放它。

如果你想播放一个任意文件,只需删除我创建未压缩副本的代码位(查找AVAssetReader / AVAssetWriter),然后将该类指向其他一些歌曲文件。

http://www.libsdl.org/

我认为根据您的要求,您可以从上面的链接获得更好的支持