AVAudioPlayer 重置当前播放的声音并从头开始播放
Posted
技术标签:
【中文标题】AVAudioPlayer 重置当前播放的声音并从头开始播放【英文标题】:AVAudioPlayer resetting currently playing sound and playing it from beginning 【发布时间】:2010-11-12 18:24:23 【问题描述】:我在使用 AVAudioPlayer 时遇到问题,我想重置当前正在播放的播放器并让它再次播放。
我尝试了以下方法,但没有成功:
声音播放一次,但第二次我选择停止声音的按钮,第三次再次启动声音。
//Stop the player and restart it
if (player.playing)
NSLog(@"Reset sound: %@", selectedSound);
[player stop];
[player play];
else
NSLog(@"playSound: %@", selectedSound);
[player play];
我也尝试过使用 player.currentTime = 0,这表示将重置播放器,但不起作用,我还尝试重置 currentTime = 0,然后调用不起作用的 play。
//Stop the player and restart it
if (player.playing)
NSLog(@"Reset sound: %@", selectedSound);
player.currentTime = 0;
[player play];
else
NSLog(@"playSound: %@", selectedSound);
[player play];
【问题讨论】:
【参考方案1】:对于您的情况,我会尝试以下方法
//Pause the player and restart it
if (player.playing)
NSLog(@"Reset sound: %@", selectedSound);
[player pause];
player.currentTime = 0;
[player play];
如果您要立即再次播放声音,我建议您暂停而不是停止。调用 stop "停止播放并撤消播放所需的设置。"
【讨论】:
FWIW,我已经看到只需将 currentTime 设置为零就足够了。使用此处描述的方法,我看到音频在连续执行几次后拒绝播放。【参考方案2】:如前所述,如果您希望再次播放声音,您应该避免通过停止来禁用 AVAudioPlayer 实例,而只需重置它正在播放的位置。所以,不要使用 stop() 或 pause() 但正如 Plumenator 提到的,只需发出 .currentTime=0。因此,在您的情况下,您只需这样做:
if (player.isPlaying)
player.currentTime = 0
else
player.play()
【讨论】:
由于您基本上复制了 Plenumenator 的评论,您能否通过添加参考代码示例来扩展您的答案? 谢谢,一个很好的建议。我已经添加了该块,以便更清楚 Plumenator 的建议:-) 谢谢【参考方案3】:Swift 示例:
player.currentTime = 0.0;
【讨论】:
以上是关于AVAudioPlayer 重置当前播放的声音并从头开始播放的主要内容,如果未能解决你的问题,请参考以下文章