gpt4 book ai didi

avaudioengine - 使用 AVAudioEngine 淡入/淡出

转载 作者:行者123 更新时间:2023-12-02 01:31:26 31 4
gpt4 key购买 nike

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

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

最佳答案

我的应用程序中出现了淡出,但没有触及 AudioUnit(代码如下)。您也可以调整它以进行淡入。

请注意,我将计时器分配给成员变量,以便我可以在其他点(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];
}
}

关于avaudioengine - 使用 AVAudioEngine 淡入/淡出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36700041/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com