带有来自 NSURL 的 AVPlayer 的 AVPlayerViewController
Posted
技术标签:
【中文标题】带有来自 NSURL 的 AVPlayer 的 AVPlayerViewController【英文标题】:AVPlayerViewController with AVPlayer from NSURL 【发布时间】:2015-09-14 07:45:06 【问题描述】:我有从 url 加载视频并将播放器放入 AVPlayerViewController 的 AVPlayer,但我不想缓冲和下载视频,直到用户按下播放按钮。我该怎么做?
var player: AVPlayer = AVPlayer(URL: nsurl)
var newVideoChunk: AVPlayerViewController = AVPlayerViewController()
newVideoChunk.player = player
【问题讨论】:
【参考方案1】:AVPlayerViewController 与来自 NSURL 的 AVPlayer?
您需要设置视频资源并使用该基于 NSURL 的资源创建 playerItem。然后您需要(立即)向该 playerItem 添加一个观察者:
self.playerItem?.addObserver(self, forKeyPath: "status", options: NSKeyValueObservingOptions.New, context: Constants.AVPlayerStatusObservationContext)
在键值观察例程中,您可以捕获上下文并调用外部函数:
override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>)
//
if context == Constants.AVPlayerStatusObservationContext
if (keyPath! == "status")
if (player!.status == AVPlayerStatus.ReadyToPlay)
print("ready")
readyToPlay()
else if (player!.status == AVPlayerStatus.Failed)
// something went wrong. player.error should contain some information
else if (player!.status == AVPlayerStatus.Unknown)
print("unknown")
如果您只想在单击按钮时处理缓冲和下载,请确保仅在按钮操作方法中添加观察者。这对文件 URL 和在线 URL 一样有效。
请查看我的示例要点了解更多信息:
VideoPlayerViewController.swift
【讨论】:
以上是关于带有来自 NSURL 的 AVPlayer 的 AVPlayerViewController的主要内容,如果未能解决你的问题,请参考以下文章
iOS 7中的iOS 7 AVPlayer AVPlayerItem持续时间不正确