我们目前正在考虑将我们已经存在多年的音乐可视化软件带到通过新的iOS Spotify SDK播放音乐的iOS应用中 - 请查看http://soundspectrum.com以查看我们的视觉效果,如G-Force和Aeon。
无论如何,我们将Spotify iOS SDK中的演示项目全部启动并运行,但事情看起来不错,但向前迈出的主要一步是访问音频pcm,以便我们可以将它发送到我们的可视引擎等。 / p>
Spotify开发人员或知情人士是否可以建议获得pcm音频的可能性?音频pcm块可以像几千个最新样本的循环缓冲区一样简单(我们将用于FFT等)。
提前致谢!
答案 0 :(得分:8)
子类SPTCoreAudioController
并执行以下两项操作之一:
覆盖connectOutputBus:ofNode:toInputBus:ofNode:inGraph:error:
并使用AudioUnitAddRenderNotify()
向destinationNode
音频单元添加渲染回调。回调将在呈现输出节点时被调用,并且可以让您在发送扬声器时访问音频。完成上述操作后,请务必致电super
的Spotify iOS SDK音频管道实施工作。
覆盖attemptToDeliverAudioFrames:ofCount:streamDescription:
。这使您可以访问库生成的PCM数据。但是,在默认管道中进行了一些缓冲,因此此回调中给出的数据可能比发送到扬声器的时间晚了半秒,所以我建议使用建议1对此。在此处调用super
以继续使用默认管道。
获得自定义音频控制器后,使用它初始化SPTAudioStreamingController
,您应该很高兴。
我实际上使用了建议1来实现iTunes'我的Mac OS X Spotify客户端中的visualiser API是使用CocoaLibSpotify构建的。它没有100%顺利工作(我认为我在使用runloops和其他东西做错了),但它很好地驱动了G-Force和Whitecap。您可以找到项目here,并且可视化工具内容位于VivaCoreAudioController.m。 CocoaLibSpotify中的音频控制器类和该项目基本上与新iOS SDK中的相同。