如何使用碳或可可播放存档的音频

时间:2010-11-09 00:42:31

标签: cocoa macos core-audio macos-carbon

我有一个包含多个.mp3格式音频文件的存档文件。 我可以寻找指定的文件并以块的形式检索该文件。

我想连续播放其中的几个文件。看起来这应该是一件简单的事情,但我很难找到一个如何做到这一点的可靠例子。

我尝试使用matt gallagher的AudioStreamer示例以及apple aqplay和afsplay示例,它们看起来过于复杂,我只是不能让它们做我需要的。

那么有没有人对如何实现这一点有任何指示?

将文件提取到磁盘并播放它们是我想避免的解决方案。

更新:

原始问题尚不清楚,但格式是自定义存档格式,我可以通过块读取块。出于各种原因,我无法将文件保存到临时文件中。所以我正在寻找的是一种将块提供给音频库来播放它们的方法。

AudioStreamer和afsplay示例几乎可以做到这一点 - 为第一首曲目工作得非常漂亮 - 但随后又在第二首曲目上窒息 - 可能是因为它们是针对单个流而设计的,而不是一个接一个地来自多个文件的流......这些变化应该很简单,但我对coreaudio的了解是零。我怀疑核心音频对于这类问题也是过度杀伤(但是再一次可能不会......再次对我不利的经验)

2 个答案:

答案 0 :(得分:0)

[修订回答]

哦,好的。无论如何,您正在解码存档,因此这与您从源继续接收/检索多个连续轨道的内容的任何其他情况基本没有区别。基本上,流媒体,但不是通过网络。

您应该可以使用音频队列执行此操作。

请注意,如果比特率或采样率不同,您可能需要更改文件之间的音频配置(ASBD)。

但是,我不是核心音频专家。其他人可能会提供更具体的答案。

答案 1 :(得分:0)

您需要确保为每个不同的MP3文件重新初始化或创建音频转换器的新实例。如果需要,您可以将整个音频链重新创建到AudioQueue。除非存在性能问题,否则我认为没问题。