带有来自 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的主要内容,如果未能解决你的问题,请参考以下文章

AVPlayer 不播放我解析的视频

iOS 7中的iOS 7 AVPlayer AVPlayerItem持续时间不正确

Swift AVPlayer 不会播放 MP4:播放按钮通过它

如何更改AVPlayer的视频方向?

使用 AVPlayer 播放本地视频

UIView 中的 AVPlayer 视图缺少控件