Impossible to stop AVPlayer Impossible to stop AVPlayer ios ios

Impossible to stop AVPlayer


From this post I found the best solution to completely stop AVPlayer before you leave or start a new player:

videoPlayer.replaceCurrentItemWithPlayerItem(nil)

[Update] For SWIFT 3:

player.replaceCurrentItem(with: nil)


If you declare player as an optional variable, you can then set the player to nil to deallocate it.

Silly example but it shows what happens:

import UIKitimport AVFoundationclass ViewController: UIViewController {    @IBOutlet weak var btnPlay: UIButton!    var player:AVPlayer?    override func viewDidLoad() {        super.viewDidLoad()    }    @IBAction func btnPress(sender: AnyObject) {        if (btnPlay.titleLabel?.text == "Play") {            initPlayer()            btnPlay.setTitle("Stop", forState: UIControlState.Normal)        } else {            stopPlayer()            btnPlay.setTitle("Play", forState: UIControlState.Normal)        }    }    func initPlayer()  {        if let play = player {            print("playing")            play.play()        } else {            print("player allocated")            player = AVPlayer(URL: NSURL(string: "http://streaming.radio.rtl.fr/rtl-1-48-192")!)            print("playing")            player!.play()        }    }    func stopPlayer() {        if let play = player {            print("stopped")            play.pause()            player = nil            print("player deallocated")        } else {            print("player was already deallocated")        }    }}


SWIFT 3 Version:

player.replaceCurrentItem(with: nil)