为快速开发的 ios 应用程序检索存储为 PFFile 的视频文件

Posted

技术标签:

【中文标题】为快速开发的 ios 应用程序检索存储为 PFFile 的视频文件【英文标题】:Retrieving video file stored as PFFile for ios application developed in swift 【发布时间】:2015-11-23 08:12:41 【问题描述】:

有一个解析类“响应”,其中一个字段是文件类型。通过选择单元格并单击“上传文件”手动将文件上传到每一行的此列。

现在我需要获取这个文件(据我所知应该是 PFFile 类型)并在我的 ios 应用程序中播放这个文件(它是一个视频文件)。

请帮忙!

【问题讨论】:

【参考方案1】:

假设您只想流式传输视频文件而不实际下载它(这可能需要一段时间),您只需在“响应”类中获取 PFObject。获得对象后,您可以获取对保存视频的 PFFile 的引用并访问其 URL 属性:

// define these as class properties:
var player:AVPlayer!
var playerLayer:AVPlayerLayer!

// write all of the below somewhere in your ViewController, e.g. in viewDidLoad:
var videoUrl:String!

let query = PFQuery(className: "Response")
query.getObjectInBackgroundWithId("objectId123") 
    (object:PFObject?, error:NSError?) in
    if (error == nil && object != nil) 
        let videoFile = object!["keyForVideoPFFile"] as! PFFile
        videoUrl = videoFile.url
        self.setupVideoPlayerWithURL(NSURL(string: videoUrl)!)
    

在上面的代码中,您将视频的 URL 提供给将流式传输视频的 AVPlayer 对象。请注意,您需要导入 AVKit 才能使用 AVPlayer 和 AVPlayerLayer。设置播放器的函数如下:

func setupVideoPlayerWithURL(url:NSURL) 

    player = AVPlayer(URL: url)
    playerLayer = AVPlayerLayer(player: self.player)
    playerLayer.videoGravity = AVLayerVideoGravityResizeAspect
    playerLayer.frame = self.view.frame   // take up entire screen
    self.view.layer.addSublayer(self.playerLayer)
    player.play()

我建议您查看有关 AVPlayer 和 AVPlayerLayer 的 Apple 文档,以了解有关视频播放的更多信息。

AVPlayer:https://developer.apple.com/library/prerelease/ios/documentation/AVFoundation/Reference/AVPlayer_Class/index.html

AVPlayerLayer:https://developer.apple.com/library/prerelease/ios/documentation/AVFoundation/Reference/AVPlayerLayer_Class/index.html#//apple_ref/occ/cl/AVPlayerLayer

【讨论】:

以上是关于为快速开发的 ios 应用程序检索存储为 PFFile 的视频文件的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 上存储和检索数千个地点的最佳方式

如何快速检索不同单元格中的数组元素 ios

Swarm挖矿快速搭建bzz节点空投?如何进行bzz挖矿?

通过 Swift 在 iPhone (iOS) 开发中存储/检索用户数据(读/写文件)的正确方法是啥?

一文快速上手Logstash

时序数据库的秘密 —— 快速检索