Cómo cerrar AVPlayer y AVPlayerItem anteriores

Estoy creando una aplicación de iOS en Swift que reproduce un video en un bucle en una pequeña capa en la esquina superior derecha de la pantalla que muestra un video de un elemento de color específico. el usuario luego toca el elemento de color correspondiente en la pantalla. cuando lo hacen, la variable videoName se cambia aleatoriamente al siguiente color y se activa el video correspondiente. No tengo problemas para subir, reproducir y reproducir el video con AVPlayer, AVPlayerItem como se ve en el código adjunto. Donde estoy atrapado es que cada vez que se muestra el siguiente video, los anteriores permanecen abiertos detrás de él. Además, después de reproducir 16 videos, el reproductor desaparece por completo en mi iPad. He intentado muchas sugerencias presentadas en este y otros sitios, pero Swift encuentra un problema con ellas o simplemente no funciona.Entonces, pregunta: dentro de mi código aquí, ¿cómo le digo "oye, el siguiente video ha comenzado a reproducirse, elimine el video anterior y su capa y libere la memoria para que pueda reproducir tantos videos como sea necesario"?

//set variables for video play
var playerItem:AVPlayerItem?
var player:AVPlayer?

//variables that contain video file path, name and extension
var videoPath = NSBundle.mainBundle().resourcePath!
var videoName = "blue"
let videoExtension = ".mp4"

//DISPLAY VIDEO
func showVideo(){

        //Assign url path
        let url = NSURL(fileURLWithPath: videoPath+"/Base.lproj/"+videoName+videoExtension)
        playerItem = AVPlayerItem(URL: url)
        player=AVPlayer(playerItem: playerItem!)
        let playerLayer=AVPlayerLayer(player: player!)

        //setplayser location in uiview and show video
        playerLayer.frame=CGRectMake(700, 5, 350, 350)
        self.view.layer.addSublayer(playerLayer)
        player!.play()

     // Add notification to know when the video ends, then replay   it again.  THIS IS A CONTINUAL LOOP
     NSNotificationCenter.defaultCenter().addObserverForName(AVPlayerItemDidPlayToEndTimeNotification, object: player!.currentItem, queue: nil)
    { notification in
        let t1 = CMTimeMake(5, 100);
        self.player!.seekToTime(t1)
        self.player!.play()
    }

}

`

Respuestas a la pregunta(3)

Su respuesta a la pregunta