首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AVAudioPlayer失真

AVAudioPlayer失真
EN

Stack Overflow用户
提问于 2014-08-27 12:36:05
回答 2查看 508关注 0票数 0

我有一个iOS应用程序,它用AVPlayer播放一些视频。我也有一个AVAudioPlayer实例,我用来播放声音效果时,一个按钮被点击,例如,开始播放,回放和停止播放。这两个同时都在“玩”。这很好,但是声音效果似乎是加倍的(同时播放两次)或者声音太大了。在我耳边听起来好像是玩了两次。我在触发这样的音效:

代码语言:javascript
复制
- (void)playSFXForAction:(ActionSFX)action
{
    NSURL *sfx;
    switch (action) {
        case ActionSFXStartRecord:
            sfx = [NSURL URLWithString:[[NSBundle mainBundle] pathForResource:@"start-recording-fade" ofType:@"aiff"]];
            break;
        case ActionSFXStopRecord:
            sfx = [NSURL URLWithString:[[NSBundle mainBundle] pathForResource:@"stop-recording-fade" ofType:@"aiff"]];
            break;
        case ActionSFXPreview:
            sfx = [NSURL URLWithString:[[NSBundle mainBundle] pathForResource:@"buzz" ofType:@"aiff"]];
            break;
        default:
            break;
    }
    NSError *error;
    self.sfxPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:sfx error:&error];
    [self.sfxPlayer play];
}

失真的回放大约有80%的时间。有时,它发挥了预期的声音效果。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-02 00:34:42

在代码的其他地方,我有一个不相关的保留周期。在分析器中快速检查显示有两个VC处理声音效果的活生生的实例。一旦固定了保留周期,失真(双击)就解决了。

票数 0
EN

Stack Overflow用户

发布于 2014-08-27 13:06:08

可能有两个原因我认为你要面对..。

(1) --这仅仅是因为,当您想要播放声音时,一直在调用该方法,而AVAudioPlayer则一直在使用方法进行分配。

您应该将alloc方法放在任何其他地方,然后只需播放、停止或准备播放函数。

因此,球员只分配一次,但播放声音的次数,你想要的。

(2),否则问题在声音文件中。只要在电脑上播放那个文件就行了。

希望这能有所帮助。而不是用更多的代码告诉这里。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25527383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档