了解AVAudioEngine延迟?

时间:2016-07-05 05:49:45

标签: avfoundation latency avaudioengine

我使用tapAVAudioEngine API中的基于块的回调中获取PCM缓冲区样本。我之前使用的是Core-Audio,但是复杂性和难以逾越的大量记录的c代码驱使我使用这个基于AVFoundation的框架。

我有这样的代码:

 [self startEngine];

  [_player play];


[mainMixer installTapOnBus:0 bufferSize:256 format:[mainMixer outputFormatForBus:0] block:^(AVAudioPCMBuffer *buffer, AVAudioTime *when) {

          [buffer setFrameLength:256];



          float * const  p = *(buffer.floatChannelData);

          float sum = 0;
          for (int i = 0; i < buffer.frameLength; i+=buffer.stride) {
             if (p[i] > sum) {
                sum = p[i];
             }
          }

我只是开始一个鼓循环并捕获每个回调中最高值的浮点数。在其他地方,有一个可视组件与我正在采用的最大值(sum)的变化值一起动画。

问题是我听到的视图和鼓循环的动画几乎是不同步的。所以我的问题是AVAudioEngine是否从根本上无法提供甚至在音频源时间50-100ms内的回调?

0 个答案:

没有答案