代码之家  ›  专栏  ›  技术社区  ›  Cliff

播放时音频队列间隙

  •  0
  • Cliff  · 技术社区  · 16 年前

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

    1 回复  |  直到 15 年前
        1
  •  0
  •   Cliff    15 年前

    我终于解决了这个问题。我发现,如果我跳过了音频的前44个字节(波头的确切大小),那么它就可以在设备上正常播放。不管我是否跳过44,它都能在SIM卡上正确支付。很奇怪,我不知道为什么,但这就是它的工作方式。