Impossible to stop AVPlayer

前端 未结 3 1278
一整个雨季
一整个雨季 2020-12-15 16:41

I am currently testing the use of AVPlayer with audio streaming url, using Swift. There are play() and pause() methods, but the problem is that, pausing onl

相关标签:
3条回答
  • 2020-12-15 17:06

    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)
    
    0 讨论(0)
  • 2020-12-15 17:06

    SWIFT 3 Version:

    player.replaceCurrentItem(with: nil)
    
    0 讨论(0)
  • 2020-12-15 17:12

    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 UIKit
    import AVFoundation
    
    class 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")
            }
        }
    }
    
    0 讨论(0)
提交回复
热议问题