【问题标题】:fade in/out with AVAudioEngine使用 AVAudioEngine 淡入/淡出
【发布时间】:2016-08-10 13:10:17
【问题描述】:

我的应用程序动态添加和删除提供mainMixerNode 的节点。发生这种情况时,我会听到咔哒声或爆音,因为音量没有减弱。

在建立连接时如何实现平滑过渡?我需要在我的 AudioUnit 中自己实现淡入淡出,还是 AVAudioEngine 可以更优雅地处理它?

【问题讨论】:

    标签: avaudioengine


    【解决方案1】:

    我在我的应用程序中淡出而没有触摸 AudioUnit(代码如下)。 您也可以对其进行调整以进行淡入。

    请注意,我将计时器分配给成员 var,因此我可以在其他点(viewWillDisappeardelloc 等)使其无效。我担心它听起来不流畅,但我试了一下,效果很好。

    - (void)fadeOutAudioWithDuration:(double)duration {
        double timerInterval = 0.1;
        NSNumber *volumeInterval = [NSNumber numberWithDouble:(timerInterval / duration)];
        self.fadeOutTimer = [NSTimer scheduledTimerWithTimeInterval:timerInterval target:self selector:@selector(fadeOutTimerDidFire:) userInfo:volumeInterval repeats:YES];
    }
    
    - (void)fadeOutTimerDidFire:(NSTimer *)timer {
        float volumeInterval = ((NSNumber *)timer.userInfo).floatValue;
        float currentVolume = self.audioEngine.mainMixerNode.outputVolume;
        float newValue = MAX(currentVolume - volumeInterval, 0.0f);
        self.audioEngine.mainMixerNode.outputVolume = newValue;
        if (newValue == 0.0f) {
            [timer invalidate];
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-27
      • 1970-01-01
      • 1970-01-01
      • 2012-02-13
      • 2011-07-14
      • 1970-01-01
      相关资源
      最近更新 更多