按需下载资源,但无法访问。 Swif 4

时间:2019-04-01 17:59:49

标签: swift4 avplayer on-demand-resources

在我的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)。但是在将它们标记并下载之后,它们将无法工作,并且控制台中不会打印任何内容。应用程序中只会出现黑屏。 >

我已经坚持了很长时间,并在真正的帮助下提供了帮助。

谢谢

1 个答案:

答案 0 :(得分:0)

我认为您在访问视频文件之前没有请求点播资源。也许您可以尝试在AppDelegate中将NSBundleResourceRequest实例声明为全局变量。