Swift 2 AVPlayer – 播放下一个video上一个video

我不止一天就在研究这个部分。 请提出任何想法。

我必须完成播放video。我有一个video列表。 如果用户使其全屏video,则上一个和下一个播放器button启用,并点击播放。

这是我的代码;

var commmentQueuePlayer = AVQueuePlayer() var items = [AVPlayerItem]() if let player = comPlayerControl { let videoURL: String = "http://cdnapi.kaltura.com/p/11/sp/11/playManifest/entryId/0_6swapj1k/format/applehttp/protocol/http/a.m3u8" let firstItemURL: String = "http://cdnapi.kaltura.com/p/11/sp/11/playManifest/entryId/0_2p3957qy/format/applehttp/protocol/http/a.m3u8" let secondItemURL: String = "http://cdnapi.kaltura.com/p/11/sp/11/playManifest/entryId/0_buy5xjol/format/applehttp/protocol/http/a.m3u8" let firstItem = AVPlayerItem(URL: NSURL(string: firstItemURL)! ) let secondItem = AVPlayerItem(URL: NSURL(string: secondItemURL)! ) let playerItem = AVPlayerItem(URL: NSURL(string: videoURL)! ) items = [firstItem,secondItem,playerItem] commmentQueuePlayer = AVQueuePlayer(items: items) player.player = commmentQueuePlayer player.view.frame = videoCell.frame player.view.sizeToFit() player.showsPlaybackControls = true videoCell.addSubview(player.view) // comPlayerControl.player?.play() } 

这里发生的事情是第二次开始。 像一个队列。

请让我知道与AVQueuePlayerController或AVPlayerController是好的。

请帮助我的任何人。我很遗憾,我不能得到解决scheme。

我想知道我可以触发下一个上一个播放器图标

在这里输入图像说明

请build议。

我创build了一个演示项目 , 演示如何在AVPlayer上放置自定义button,并响应点击。

做了什么:

  • Xib(使用自动布局)文件创build的自定义button像下一个,重放等。
  • button连接到源打印什么需要做的。 喜欢:播放下一个或重播。
  • 当video播放结束时添加了观察者。
  • 当video播放结束后,会显示带有button的xib文件。

我build议使用AVQueuePlayer。 当前项目完成播放后,队列播放器将自动播放队列中的下一个项目。 一个想到要记住的是,一个AVPlayerItem完成播放后,它将被从队列中删除,所以如果你要倒退,你将不得不重置队列或手动添加新的项目队列这里是一个实现这个 。

在Swift中重新设置队列应该看起来像这样

 func resetVideoQueue(video: string){ if let videos = Videos { var queue: [AVPlayerItem] = [] switch video { case "vid1": queue.append(AVPlayerItem(URL: NSURL(string: videos["vid1"])!)) queue.append(AVPlayerItem(URL: NSURL(string: videos["vid2"])!)) queue.append(AVPlayerItem(URL: NSURL(string: videos["vid3"])!)) queue.append(AVPlayerItem(URL: NSURL(string: videos["vid4"])!)) break case "vid2": queue.append(AVPlayerItem(URL: NSURL(string: videos["vid2"])!)) queue.append(AVPlayerItem(URL: NSURL(string: videos["vid3"])!)) queue.append(AVPlayerItem(URL: NSURL(string: videos["vid4"])!)) break case "vid3": queue.append(AVPlayerItem(URL: NSURL(string: videos["vid3"])!)) queue.append(AVPlayerItem(URL: NSURL(string: videos["vid4"])!)) break case "vid4": queue.append(AVPlayerItem(URL: NSURL(string: videos["vid4"])!)) break } setVideoPlayer(queue) } } internal func setVideoPlayer(queue: [AVPlayerItem]) { queuePlayer = AVQueuePlayer(items: queue) videoPlayerViewController.player = queuePlayer presentViewController(videoPlayerViewController, animated: true) { self.videoPlayerViewController.player?.play() } } 

要转到下一个项目,请使用MrHazebuild议的advanceToNextItem()方法。