【问题标题】:Getting videos from Assets catalog using On Demand resources使用 On Demand 资源从资产目录中获取视频
【发布时间】:2015-09-07 18:40:29
【问题描述】:

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

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

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

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

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

tokyoVideo.data

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

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

【问题讨论】:

    标签: xcode7 ios9 asset-catalog on-demand-resources


    【解决方案1】:

    问题在于将 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
                    }
    
                })
            }
        }
    
    }
    

    【讨论】:

    • 感谢您注意到 nsbundleresourcerequest 对象具有“bundle”属性。
    【解决方案2】:

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

    NSDataAsset

    【讨论】:

    • 谢谢!这正是我想要的。
    【解决方案3】:

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

    更多信息请参考link

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

    【讨论】:

    • 嗬我刚刚看到developer.apple.com/library/prerelease/ios/documentation/… 是的,它不能在资产目录中.. ^^
    • 请注意表中的“数据文件”行。如果您在 Xcode 中的资产目录中创建“数据集”,您可以将特定设备的视频粘贴到其中并使用 NSDataAsset 类在运行时加载它们。
    猜你喜欢
    • 2019-03-02
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多