Created
June 3, 2016 07:23
-
-
Save bauloc/e3016beb8bdd940d7704793975f5d8fa to your computer and use it in GitHub Desktop.
avplayer
This file contains 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
Detecting AVPlayer video start stop events | |
Here is nice simple avplayer piece of code playing a small collection of videos in a queue. My question. I actually want to pause between videos on my queue. Is it possible? | |
I did note that rate fires twice; status fires just once as does notification. | |
import UIKit | |
import AVKit | |
import AVFoundation | |
class ViewController: UIViewController { | |
@IBOutlet weak var VideoView: UIView! | |
var player:AVQueuePlayer = AVQueuePlayer() | |
@IBAction func NextSlide(sender: AnyObject) { | |
player.play() | |
} | |
override func viewDidLoad() { | |
func NextSlide(sender: AnyObject) { | |
} | |
super.viewDidLoad() | |
// Do any additional setup after loading the view, typically from a nib. | |
let arrayOfPaths: [String] = ["http://192.100.1.1:8080/dino1.mov","http://192.100.1.1:8080/dino1.mov","http://192.100.1.1:8080/dino1.mov"] | |
var shots = [AVPlayerItem]() | |
for item in arrayOfPaths { | |
let url2adopt = NSURL(string: item) | |
let avAsset = AVURLAsset(URL: url2adopt!) | |
let shot = AVPlayerItem(asset: avAsset) | |
shots.append(shot) | |
} | |
player = AVQueuePlayer(items: shots) | |
let playerLayer = AVPlayerLayer(player: player) | |
playerLayer.frame = VideoView.layer.bounds | |
VideoView.layer.addSublayer(playerLayer) | |
player.addObserver(self, forKeyPath: "status", options: NSKeyValueObservingOptions.New, context: nil) | |
player.addObserver(self, forKeyPath: "rate", options: NSKeyValueObservingOptions.New, context: nil) | |
NSNotificationCenter.defaultCenter().addObserver(self, selector: "itemDidFinishPlaying:", name: AVPlayerItemDidPlayToEndTimeNotification, object: player.currentItem) | |
player.play() | |
} | |
override func didReceiveMemoryWarning() { | |
super.didReceiveMemoryWarning() | |
// Dispose of any resources that can be recreated. | |
} | |
// catch changes to status | |
override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) { | |
if (keyPath == "rate") { | |
print(player.rate) | |
} | |
if (keyPath == "status") { | |
print(player.status) | |
} | |
} | |
func itemDidFinishPlaying(notification:NSNotification) { | |
print("finished") | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment