Last active
May 2, 2020 14:33
-
-
Save Pyrolr/debb4fca8f608b1300e099a5b3547031 to your computer and use it in GitHub Desktop.
AVPlayerController overlay custom view
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class ViewController: UIViewController { | |
let AVPlayerVC = AVPlayerViewController() | |
var commmentQueuePlayer = AVQueuePlayer() | |
var OverlayView = UIView() | |
var prevItem:AVPlayerItem? | |
override func viewDidLoad() { | |
super.viewDidLoad() | |
setupCustomPlayer() | |
} | |
func setupCustomPlayer() { | |
AVPlayerVC.view.frame = self.view.frame | |
AVPlayerVC.view.sizeToFit() | |
AVPlayerVC.showsPlaybackControls = true | |
self.view.addSubview(AVPlayerVC.view) | |
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)! ) | |
let items = [firstItem,secondItem,playerItem] | |
commmentQueuePlayer = AVQueuePlayer(items: items) | |
commmentQueuePlayer.actionAtItemEnd = .None | |
AVPlayerVC.player = commmentQueuePlayer | |
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(stopedPlaying), name: AVPlayerItemDidPlayToEndTimeNotification, object: nil) | |
addContentOverlayView() | |
AVPlayerVC.player?.play() | |
} | |
func addContentOverlayView() { | |
OverlayView.frame = CGRectMake(0,30,AVPlayerVC.view.bounds.width, 100) | |
OverlayView.hidden = true | |
OverlayView.backgroundColor = UIColor ( red: 0.5, green: 0.5, blue: 0.5, alpha: 0.379 ) | |
let btnNext = UIButton(frame:CGRectMake(AVPlayerVC.view.bounds.width - 60,0,60,44)) | |
btnNext.setTitle(">>", forState:.Normal) | |
btnNext.addTarget(self, action:"playNext", forControlEvents:.TouchUpInside) | |
// btnNext.layer.borderColor = UIColor ( red: 0.0, green: 0.0, blue: 1.0, alpha: 0.670476140202703 ).CGColor | |
// btnNext.layer.borderWidth = 1.0 | |
OverlayView.addSubview(btnNext) | |
let btnReplay = UIButton(frame:CGRectMake((AVPlayerVC.view.bounds.width/2)-40,0,80,44)) | |
btnReplay.setTitle("Replay", forState:.Normal) | |
btnReplay.addTarget(self, action:"replayVideo", forControlEvents:.TouchUpInside) | |
OverlayView.addSubview(btnReplay) | |
let btnPrevious = UIButton(frame:CGRectMake(0,0,80,44)) | |
btnPrevious.setTitle("<<", forState:.Normal) | |
btnPrevious.addTarget(self, action:"previousVideo", forControlEvents:.TouchUpInside) | |
OverlayView.addSubview(btnPrevious) | |
let btnComment = UIButton(frame:CGRectMake((AVPlayerVC.view.bounds.width/2)-70,40,140,44)) | |
btnComment.setTitle("Comments", forState:.Normal) | |
btnComment.addTarget(self, action:"openComments", forControlEvents:.TouchUpInside) | |
OverlayView.addSubview(btnComment) | |
AVPlayerVC.view.addSubview(OverlayView); | |
} | |
func playNext() { | |
prevItem = AVPlayerVC.player?.currentItem | |
OverlayView.hidden = true | |
commmentQueuePlayer.advanceToNextItem() | |
} | |
func replayVideo() { | |
OverlayView.hidden = true | |
AVPlayerVC.player?.currentItem?.seekToTime(kCMTimeZero) | |
AVPlayerVC.player?.play() | |
} | |
func previousVideo() { | |
OverlayView.hidden = true | |
if prevItem != AVPlayerVC.player?.currentItem { | |
if (commmentQueuePlayer.canInsertItem(prevItem!, afterItem:AVPlayerVC.player?.currentItem)) { | |
//commmentQueuePlayer.insertItem(prevItem!, afterItem:AVPlayerVC.player?.currentItem) | |
commmentQueuePlayer.replaceCurrentItemWithPlayerItem(prevItem) | |
prevItem = AVPlayerVC.player?.currentItem | |
replayVideo() | |
} | |
} else { | |
replayVideo() | |
//Else display alert no prev video found | |
} | |
} | |
func openComments() { | |
//Open the comment View/VC | |
} | |
func stopedPlaying() { | |
if prevItem == nil { | |
prevItem = AVPlayerVC.player?.currentItem | |
} | |
OverlayView.hidden = false | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment