play descargar ios swift avplayer

ios - descargar avplayer



Imposible detener AVPlayer (3)

Desde esta post , encontré la mejor solución para detener completamente AVPlayer antes de que abandone o inicie un nuevo reproductor:

videoPlayer.replaceCurrentItemWithPlayerItem(nil)

Actualmente estoy probando el uso de AVPlayer con url de transmisión de audio, usando Swift . Existen métodos play() y pause() , pero el problema es que, al pausar solo, la secuencia permanece en caché en el dispositivo.

Aquí está mi código de prueba:

import UIKit import AVFoundation class ViewController: UIViewController { let player = AVPlayer(URL: NSURL(string: "http://streaming.radio.rtl.fr/rtl-1-48-192")!) @IBOutlet weak var btnPlay: UIButton! 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() { player.play() } func stopPlayer() { // player.currentItem = nil // Last thing I tried, but generate an error player.pause() } }

Aquí están los problemas al intentar algo:

player = nil : "No se puede asignar un valor de tipo ''NilLiteralCOnvertible'' a un valor de tipo ''AVPlayer''"

player.currentItem = nil : "No se puede asignar a la propiedad: ''currentItem'' es una propiedad de solo obtención"

Intenté todo, incluso a través de AVQueuePlayer sin ningún resultado efectivo. (Obviamente, ya que solo tengo un artículo en mi caso).

¿Cómo detener AVPlayer o destruir su instancia ?


Si declara el player como una variable opcional, puede configurar el jugador en nil para desasignarlo.

Ejemplo tonto pero muestra lo que sucede:

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") } } }


Versión SWIFT 3:

player.replaceCurrentItem(with: nil)