通过AVAudioEngine播放内存中的压缩音频

时间:2018-07-08 10:31:42

标签: ios audio avfoundation audiotoolbox

根据其文档中的高级描述,AVAudioEngine可以从AVAudioBuffer或文件中读取数据。如果内存中的音频数据为PCM格式,则可以使用AVAudioPlayerNode及其各种scheduleBuffer: ...方法来实现。但是,这些仅接受AVAudioPCMBuffer

是否可以将压缩数据注入AVAudioEngine实例中以进行回放?也许我没有见过的其他节点类型能够接受AVAudioCompressedBuffer而不是PCM。我只对可在iOS 8.0及更高版本中使用的解决方案感兴趣(因此,使用AVAudioConverter(仅在9.0及更高版本中受支持)对我不可行)。

我已经考虑过使用Audio Toolbox框架中的AudioConverter,但是不幸的是,使用它们会非常棘手:我正在使用通过AudioFileStream馈送的数据源(同样来自Audio Toolbox)来解析容器格式,但是该API仅能够通过回调将其推送给我来提供数据,AudioConverter希望能够通过回调将其从我那里获取,烦人的棘手(我真的不想为处理启动一个专用线程,但这似乎是解决此问题的唯一可行方法)。

我还看到了提到的Audio Queues API和AUGraph API,但是这两者似乎都非常低级……是否适合这种使用?

(这与Play audio on iOS from a memory data stream相似,但与 quitem 相同,因为在这种情况下,没有提及使用压缩音频,这确实会影响可用选项)

0 个答案:

没有答案