我有一个iOS应用程序,它用AVPlayer播放一些视频。我也有一个AVAudioPlayer实例,我用来播放声音效果时,一个按钮被点击,例如,开始播放,回放和停止播放。这两个同时都在“玩”。这很好,但是声音效果似乎是加倍的(同时播放两次)或者声音太大了。在我耳边听起来好像是玩了两次。我在触发这样的音效:
- (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%的时间。有时,它发挥了预期的声音效果。谢谢。
发布于 2014-09-02 00:34:42
在代码的其他地方,我有一个不相关的保留周期。在分析器中快速检查显示有两个VC处理声音效果的活生生的实例。一旦固定了保留周期,失真(双击)就解决了。
发布于 2014-08-27 13:06:08
可能有两个原因我认为你要面对..。
(1) --这仅仅是因为,当您想要播放声音时,一直在调用该方法,而AVAudioPlayer则一直在使用方法进行分配。
您应该将alloc方法放在任何其他地方,然后只需播放、停止或准备播放函数。
因此,球员只分配一次,但播放声音的次数,你想要的。
(2),否则问题在声音文件中。只要在电脑上播放那个文件就行了。
希望这能有所帮助。而不是用更多的代码告诉这里。
https://stackoverflow.com/questions/25527383
复制相似问题