AVAudioPlayer stop a sound and play it from the beginning

后端 未结 3 1344
旧时难觅i
旧时难觅i 2021-02-05 03:25

I used the AVAudioPlayer to play a 10 sec wav file and it works fine. Now I what to stop the wav at the 4th sec and then play it again from the very 1st sec.

Here is th

相关标签:
3条回答
  • 2021-02-05 03:31

    Apple's AVAudioPlayer class reference says:

    The stop method does not reset the value of the currentTime property to 0. In other words, if you call stop during playback and then call play, playback resumes at the point where it left off.

    So you should be able to restart it with:

    [ahhhhhSound stop];
    ahhhhhSound.currentTime = 0;
    [ahhhhhSound play];
    
    0 讨论(0)
  • 2021-02-05 03:33

    Swift:

    mySound.audioPlayer?.stop()
    mySound.audioPlayer?.currentTime = 0
    mySound.audioPlayer?.play()
    
    0 讨论(0)
  • 2021-02-05 03:51

    So I had some troubles as you can see from my comment on DarkDust's answer. The problem only appeared on iOS 4.3.3/4.3.5, iPhone 4. Possibly earlier iOS versions as well, but not iOS 5.0.1. Somehow the AVAudioPlayer itself seemed to "break" when stopping it and the latter play would just fail unexplicably. Actually a "stop" would unload some stuff loaded on prepareToPlay, that is not unloaded if you just "pause" the player - according to the reference. So my solution would be using pause instead of stop - regarded the player is currently playing - otherwise there would be no reason to stop anything. Should theoretically be faster too. Solved it for me.

    if (ahhhhhSound.playing) {
        [ahhhhhSound pause];
    }
    ahhhhhSound.currentTime = 0;
    [ahhhhhSound play];
    

    Now I can get on with life again.

    0 讨论(0)
提交回复
热议问题