提高audioqueue启动时间的一个技巧

最近一直在搞音频相关的项目,很羡慕与酷我听听瞬时的启动速度,而我自己的在线音频需要3-4s的启动时间,本地音频则需要1-2s的启动时间。有一些强迫症的笔者希望能够大大提升audioqueue的启动速度,开始以为是本地文件的加载速度不行,因为一开始使用的是cfreadstream技术,是一种异步文件读取技术,所以初步假定问题在这。接下来使用了CFReadStreamCreateWithBytesNoCopy技术和NSTimer技术,但是并无明显的速度提升。后来经过多次的定位,发现audioqueuestart函数的启动就需要花费1-2s(这次数字都是在本人电脑上测出的,不具有普遍性),当下觉得很诧异,后来经过分析发现时间主要用在音频数据的解码上了。接着使用了audioqueueprime函数来解码音频数据,果然速度大大提升,而audioqueueprime的执行时间则需要1-2s。因此,笔者就想到了一种解决方案,即提前做好所有的队列创建和音频解码功能,用户按下播放按钮则直接调用audioqueuestart函数,这样即可大大地提升用户的产品体验。

原文地址:https://www.cnblogs.com/CoderPlace/p/2458937.html