我正在钻研这一部分超过一天。请提出任何想法。
我必须完成播放视频。我有一个视频列表。如果用户制作全屏视频,则启用上一个和下一个播放器按钮,并在点击时播放。
这是我的代码;
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是否合适。
请帮助我。不幸的是,谷歌,我无法得到解决方案。
我想知道我可以触发下一个播放器图标
请建议。
答案 0 :(得分:1)
我确实创建了一个demo project,其中显示了如何在AVPlayer上放置自定义按钮,它们会响应点击次数。
做了什么:
答案 1 :(得分:0)
我建议使用AVQueuePlayer。当前项目结束播放后,队列播放器将自动播放队列中的下一个项目。我们要记住的是,在AVPlayerItem完成播放后,它将从队列中删除,因此如果要向后移动,则必须重置队列或手动将新项添加到队列here is an implementation of this
在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()
}
}
要移至下一个项目,请使用MrHaze建议的advanceToNextItem()方法。