代码之家  ›  专栏  ›  技术社区  ›  Alice Isabelle

音频工具箱播放仅播放部分输出缓冲区

  •  3
  • Alice Isabelle  · 技术社区  · 16 年前

    我正在做一个项目,它使用音频工具箱来记录和回放PCM数据,我在回放方面遇到了问题。在模拟器中,我可以很好地录制和播放音频,使用一个自定义类来处理为录制和播放缓冲区存储和寻找PCM字节的需要。在设备(iPhone(3.0.1)和iPod 2G(3.1.2))上,录制工作正常,生成的音频文件正确,但在应用程序中播放会出现口吃,就像只播放每个播放缓冲区的一部分一样。我的缓冲区有1秒长,我有3个缓冲区,在播放开始前预加载;口吃也发生在前3秒钟,我想这排除了延迟问题。

    我知道从我的源代码中得到的数据是好的,因为它在sim卡中正确播放,并作为正确的音频文件写入磁盘

    我对采样率做了一些调整;我通常使用11025Hz采样来减少文件大小(全是语音,所以听起来不错)。在44100Hz,但缓冲区大小相同的情况下,我也会遇到同样的口吃问题,但音频段速度要快得多,大约快4倍。这就是为什么我认为它只是每个缓冲区的一部分。

    我认为它只会在每个缓冲区中扮演一部分的唯一原因是延迟问题。。。就像音频工具箱代码用完了全部缓冲区,而我仍然在填充一个空缓冲区。但这将导致它正确播放预加载的缓冲区,并且 然后 开始口吃,但这并没有发生,而是一路口吃

    正在使用AVAudioSession设置音频会话,而不是音频工具箱调用,并且正在将其设置为播放类别以进行播放

    我不知道如何尝试和解决这个问题,它在模拟器上工作正常,但在设备上工作不正常,这对我来说毫无意义。

    播放回调和音频队列服务设置的代码: http://pastebin.com/mfaa546c

    1 回复  |  直到 16 年前
        1
  •  0
  •   Alice Isabelle    16 年前