0

在我的 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)。但是在它们被标记并稍后下载后​​,它们就不起作用了,控制台中也没有打印任何东西。应用程序中只出现一个黑屏。

我多年来一直坚持这一点,并提供真正的帮助。

谢谢

4

1 回答 1

0

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

于 2019-05-26T09:11:22.720 回答