gpt4 book ai didi

iphone - AVAudioPlayer:声音重叠

转载 作者:行者123 更新时间:2023-12-02 22:51:32 24 4
gpt4 key购买 nike

我制作了一个简单的应用程序,我可以在其中录制自己,然后对我录制的内容进行采样。因为我喜欢垃圾邮件按钮,所以我用我自己的应用程序尝试过。结果是,大约 20 种我自己说话的相同声音重叠并造成了可怕的困惑。我怎样才能防止将来发生这种事情?

那是我的代码:

。H

-(IBAction)record {

TempRecFile = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:[NSString stringWithString:@"VoiceFile"]]];

recorder = [[AVAudioRecorder alloc] initWithURL:TempRecFile settings:nil error:nil];
[recorder setDelegate:self];
[recorder prepareToRecord];
[recorder record];

}

-(IBAction)playback {

[recorder stop];

AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:TempRecFile error:nil];
player.volume = 1;
[player play];

}

稍后我想播放连接到多个按钮的多个声音,如果所有这些声音开始重叠,用户的耳朵可能很快就会开始流血...... :(

多个声音按钮的问题是:我需要将每个声音限制为仅与自身重叠。我怎么能做这样的事情?

最佳答案

在您的播放方法中,首先禁用按钮。初始化类时,将类设置为 AVAudioPlayer 的委托(delegate)并实现协议(protocol) AVAudioPlayerDelegate ,特别是你想捕捉 audioPlayerDidFinishPlaying:successfully: 事件。在这种情况下,重新启用按钮。

因此,这将禁用按钮,播放声音,并在播放完声音后启用按钮。

现在,对于多个按钮,只需对每个按钮执行相同的操作。问题是您需要跟踪每个按钮的 AVAudioPlayer 并知道哪个播放器与哪个按钮配合使用。 NSDictionary 可用于保存玩家列表以及键值。

编辑:要停止以前的播放并从头开始......

在类级别声明一个 AVPlayer,而不是为每个按钮按下创建一个新的。按下按钮时,您可以向它发送一条 seekToTime 消息以从头开始。对于多个按钮有多个类级别的 AVPlayer。

编辑:如果你使用 AVAudioPlayer 类,你可以做同样的事情来设置 currentTime 属性。

关于iphone - AVAudioPlayer:声音重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5852107/

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