2

我的代码基于此示例,并且已经实现了停止功能,有一些功能可以取消初始化和停止音频单元:

    AudioOutputUnitStop(toneUnit);
    AudioUnitUninitialize(toneUnit);
    AudioComponentInstanceDispose(toneUnit);
    toneUnit = nil;

在示例中,我不需要链接到暂停功能,因为只有一个频率正在播放,因此暂停和停止之间没有区别。然而,在我的实现中,我正在播放一系列不同的频率,并且我希望能够暂停播放。

任何想法如何做到这一点?

4

2 回答 2

2
  • 淡出 (~10ms) AU 的输出,在淡出后输入输出静音
  • 记住你停止读取输入信号的位置
  • 在恢复之前重置 AU
  • 从您上面记录的位置恢复(这里,输入信号到 AU 的淡入也很好)
于 2012-08-21T12:53:17.313 回答
0

您可以在播放时尝试将 0 写入缓冲区。这实际上是一个暂停。下面是一些您可以在播放回调中使用的代码。

   NSLog(@"Playing silence!");

   for (int i = 0 ; i < ioData->mNumberBuffers; i++){
    //get the buffer to be filled
    AudioBuffer buffer = ioData->mBuffers[i];
    UInt32 *frameBuffer = buffer.mData;

    //loop through the buffer and fill the frames
       for (int j = 0; j < inNumberFrames; j++){
           frameBuffer[j] = 0;
       }
   }
于 2012-10-31T08:01:11.387 回答