使用点播资源从资产目录获取视频
Getting videos from Assets catalog using On Demand resources
我将标签“tokyo”归因于我的 .mp4 视频,并在应用程序安装期间将其设置为已安装。
最初,我使用路径从我的资源中加载它,但是,现在不同了,因为它位于资产目录中。
阅读文档后,我尝试了类似的方法:
NSBundleResourceRequest(tags: ["tokyo"]).beginAccessingResourcesWithCompletionHandler { (error) -> Void in
let tokyoVideo = NSDataAsset(name: "tokyo")
}
要以 NSData 形式访问此视频,我可以使用:
tokyoVideo.data
但是,我使用的 AVPlayer 将参数作为 NSURL,而不是 NSData。
那么如何获取视频的 NSURL?
资产目录是否仅用于存储数据,我应该使用它来存储我的视频,还是有更好的选择?
我认为可以将资产目录用于视频内容,它简化了图像管理。为它使用 NSDataAsset。查看下面 table 中的最后一行。
请参阅此 link 了解更多信息
下面table列出了可以标记为点播资源的资源类型。
当然可以,电影最终会存储在数据文件中。
NSDataAsset
问题是将 mp4 放入资产目录。资源不必位于资产目录中即可作为按需资源进行访问。
将您的资产从目录中移到工作区中并标记它们,然后使用 NSBundleResourceRequest
的包 属性
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
}
})
}
}
}
我将标签“tokyo”归因于我的 .mp4 视频,并在应用程序安装期间将其设置为已安装。
最初,我使用路径从我的资源中加载它,但是,现在不同了,因为它位于资产目录中。
阅读文档后,我尝试了类似的方法:
NSBundleResourceRequest(tags: ["tokyo"]).beginAccessingResourcesWithCompletionHandler { (error) -> Void in
let tokyoVideo = NSDataAsset(name: "tokyo")
}
要以 NSData 形式访问此视频,我可以使用:
tokyoVideo.data
但是,我使用的 AVPlayer 将参数作为 NSURL,而不是 NSData。
那么如何获取视频的 NSURL? 资产目录是否仅用于存储数据,我应该使用它来存储我的视频,还是有更好的选择?
我认为可以将资产目录用于视频内容,它简化了图像管理。为它使用 NSDataAsset。查看下面 table 中的最后一行。
请参阅此 link 了解更多信息
下面table列出了可以标记为点播资源的资源类型。
当然可以,电影最终会存储在数据文件中。
NSDataAsset
问题是将 mp4 放入资产目录。资源不必位于资产目录中即可作为按需资源进行访问。
将您的资产从目录中移到工作区中并标记它们,然后使用 NSBundleResourceRequest
的包 属性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
}
})
}
}
}