5

我将标签“tokyo”归因于我的 .mp4 视频,并在应用程序安装期间将其设置为已安装。

最初,我使用路径从我的资源中加载它,但是,现在它不同了,因为它位于资产目录中。

阅读文档后,我尝试了类似的方法:

NSBundleResourceRequest(tags: ["tokyo"]).beginAccessingResourcesWithCompletionHandler { (error) -> Void in
    let tokyoVideo = NSDataAsset(name: "tokyo")
}

要以 NSData 身份访问此视频,我可以使用:

tokyoVideo.data

但是,我使用的 AVPlayer 将参数作为 NSURL,而不是 NSData。

那么如何获取视频的 NSURL 呢?资产目录是否仅用于存储数据,我应该使用它来存储我的视频,还是有更好的选择?

4

3 回答 3

5

问题是将 mp4 放在资产目录中。资源不必在资产目录中即可作为按需资源访问。

将您的资产从目录中移出到工作区并标记它们,然后使用 NSBundleResourceRequest 的 bundle 属性

import UIKit

class ViewController: UIViewController {
    var bundleRequest = NSBundleResourceRequest(tags: [])

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        let tags: Set<String>  = ["odr"]
        bundleRequest = NSBundleResourceRequest(tags: tags)

        bundleRequest.beginAccessingResourcesWithCompletionHandler { (error:NSError?) -> Void in
            if let e = error {
                print(e)
                return
            }
            NSOperationQueue.mainQueue().addOperationWithBlock({ () -> Void in
                if let url = self.bundleRequest.bundle.URLForResource("tokyo", withExtension: "mp4") {
                    //use the url to play the video with avplayer
                }

            })
        }
    }

}
于 2015-12-17T18:41:23.650 回答
2

当然可以,电影最终会存储在数据文件中。

NSDataAsset

于 2015-07-08T21:43:33.280 回答
0

我认为可以将资产目录用于视频内容,它简化了图像的管理。使用 NSDataAsset 。查看下表中的最后一行。

请参阅此链接以获取更多信息

下表列出了可以标记为按需资源的资源类型。

在此处输入图像描述

于 2015-06-22T13:18:35.257 回答