我正在和我实现的音频队列音频播放器作斗争。最初我以为它是在截短播放的第一个1/2的音频,但在加载较大的文件时,我注意到每隔1/2-1秒就会出现间隔。我已经在debug中运行了它,并且确认了我正在用音频正确地加载队列。(队列中没有加载大的零区域。)它在模拟器上播放时没有问题(没有间隙),但在设备上,我会得到间隙,就好像它丢失了其他所有的音频块一样。在我的应用程序中,我先解压缩,然后从一个内存不可变的数据对象中提取音频。我把这些数据输入音频队列。我在播放Wave音频的同一个应用程序中有一个相应的实现,这个例子在长和短的音频剪辑上都没有问题。我将wave实现与另一个进行解压的实现进行比较。这两者之间唯一的区别是我如何发现音频元数据,以及在哪里获取用于排队的音频样本。在wave实现中,我使用audiofilegetproperty和audiofilereadpackets来获取这些数据。在另一种情况下,我在使用我的解压器回调期间加载的缓存ivar之前获取数据。元数据与压缩和波形实现都匹配。我在仪器中运行过代码,在回放过程中,我看不到音频包传送/排队逻辑需要超过1毫秒的时间。我完全迷路了。如果你知道如何解决这个问题,请大声说出来。