Xcode
Swift
首先,AVPlayer本身是不可显示的,它必须附属于某个AVPlayerLayer才能显示出来。
import UIKitimport AVFoundationclass AVPlayerView: UIView { var player : AVPlayer { get { let layer = self.layer as! AVPlayerLayer return layer.player } set(newPlayer) { let layer = self.layer as! AVPlayerLayer layer.player = newPlayer } } override class func layerClass() -> AnyClass { return AVPlayerLayer.self } }
在storyboard中创建一个UIViewController,并将其view设置为AVPlayerView。
AVPlyer可以播放的当地和远程的视频,通常播放的元素称为AVPlayerItem。设置AVPlayerItem: self.playerItem = AVPlayerItem(URL: url) self.playerItem!.addObserver(self, forKeyPath: 'status', options: .New, context: &myContext) // status self.playerItem!.addObserver(self, forKeyPath: 'loadedTimeRanges', options:.New ,context: &myContext) NSNotificationCenter.defaultCenter().addObserver(self, selector: 'myMovieFinishedCallback:', name: AVPlayerItemDidPlayToEndTimeNotification, object: self.playerItem) self.playerView.player = AVPlayer(playerItem: playerItem)注意:这里对AVPlayerItem的状态,以前进程(progress)进行了监控,并监控视频结束广播消息。前两者是采用KVO的方式进行的。
当AVPlayerItem的状态和进程发生变化时,会接收到KVO事件。 override func observeValueForKeyPath(keyPath: String, ofObject object: AnyObject, change: [NSObject: AnyObject], context: UnsafeMutablePointer