我正在Swift中製作一個iOS應用程序,在屏幕右上角的小圖層中循環播放視頻,該視頻顯示特定彩色項目的視頻。用戶然後點擊屏幕上相應的彩色項目。當他們這樣做時,videoName變量會隨機更改爲下一個顏色,並觸發相應的視頻。我沒有問題提出,播放和AVPlayer,AVPlayerItem循環視頻,如附件所示。 我卡住的地方在於,無論何時顯示下一個視頻,以前的視頻都保持打開狀態。此外,在播放了16個視頻後,播放器會在我的iPad上完全消失。我已經嘗試過在這個站點和其他站點上提出的許多建議,但swift發現它們存在問題,或者它不起作用。 所以問題:在我的代碼中,我該如何告訴它「嘿,下一個視頻已經開始播放,刪除以前的視頻,它是分層和釋放內存,所以我可以根據需要播放盡可能多的視頻」?如何關閉以前的AVPlayer和AVPlayerItem
//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()
}
}
`
'每當顯示的下一個視頻,以前的因爲你不斷加入他們一個與'self.view.layer另一個的上面留it'後面開。 addSublayer(playerLayer)'。在添加新的之前,您應該刪除前一個。 – Moritz