在我的iOS应用程序中,我有一堆mp4视频,我可以使用On Demand Resources在特定时间下载该视频。使用本教程: https://www.raywenderlich.com/520-on-demand-resources-in-ios-tutorial
我在应用程序的开头,以前的视图控制器中下载了这样的资源:
func requestSceneWith(tag: String,
onSuccess: @escaping () -> Void,
onFailure: @escaping (NSError) -> Void) {
// 2
currentRequest = NSBundleResourceRequest(tags: [tag])
// 3
guard let request = currentRequest else { return }
request.beginAccessingResources { (error: Error?) in
// 4
if let error = error {
onFailure(error as NSError)
return
}
// 5
onSuccess()
}
通过查看xcode的磁盘报告,该资源似乎可以很好地下载,并且我知道它们已经下载。
但是,当应该在应用程序中播放视频时,该应用程序只会显示黑屏。这是我播放视频的代码:
let videoURL = Bundle.main.url(forResource: "cow2", withExtension: "mp4", subdirectory: "Videos/Animals")
self.player = AVPlayer(url: videoURL!)
self.myPlayerController.player = self.player
self.myPlayerController.player?.play()
现在,当资源没有被标记,并且它们随应用程序一起提供并且以后不下载时,它们可以正常工作。并且控制台会像我一样打印文件名(print(videoURL.absoluteString)。但是在将它们标记并下载之后,它们将无法工作,并且控制台中不会打印任何内容。应用程序中只会出现黑屏。 >
我已经坚持了很长时间,并在真正的帮助下提供了帮助。
谢谢
答案 0 :(得分:0)
我认为您在访问视频文件之前没有请求点播资源。也许您可以尝试在AppDelegate中将NSBundleResourceRequest实例声明为全局变量。