ios - 获取下载数据的本地 URL,而不是提供服务器 URL

标签 ios swift video avplayer

我想在我的 ViewController 中播放视频文件,该文件会加载到我的 PageViewController 的每个页面中。正如您将能够看到的,我使用了一个名为 Carlos 的插件。缓存视频(最初需要从服务器下载),这样就不必在用户每次点击新页面时都下载它们。但是,我不知道如何播放这个下载的文件(NSData)。因此,我真的很想知道如何获取下载文件的 URL,以便我可以使用 AVPlayer 播放它。

代码(仍然使用来自服务器的 URL)

let omniCache = videoCache.cache

let request = omniCache.get(URL(string: video!)!)

request
    .onSuccess { videoFile in

        print("The file..." )
        print(videoFile)

        //How can I get the local URL here instead of my server url
        if let videoURL = URL(string: self.video!){

            if self.player == nil {

                let playerItemToBePlayed = AVPlayerItem(url: videoURL as URL)

                self.player = AVPlayer(playerItem: playerItemToBePlayed)

                let playerLayer = AVPlayerLayer(player: self.player)
                playerLayer.frame = self.view.frame
                self.controlsContainerView.layer.insertSublayer(playerLayer, at: 0)

            }

        }

    }
    .onFailure { error in

        print("An error occurred :( \(error)")

    }

最佳答案

看看你的这段代码:

    videoFile in

    print("The file..." )
    print(videoFile)

    if let videoURL = URL(string: self.video!){

因此,在第一行中打印 videoFile,结果是文件的数据。但随后你就忽略了它!您再也没有提到videoFile。你为什么忽视它?那就是数据,您已经拥有了数据。现在就玩吧!

如果数据是文件,则获取其文件URL并播放。如果它在内存中 - 绝对不应该在内存中,因为完全保存在内存中的视频会使你的程序崩溃 - 保存它,并获取文件 URL 并播放它。

[但是,我不得不问,为什么您要在自己和如此简单的任务之间插入这个缓存插件。您为什么不自己将远程视频下载到磁盘呢?]

关于ios - 获取下载数据的本地 URL,而不是提供服务器 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44549347/

相关文章:

iphone - 如何在我们的 PhoneGap 应用程序中播放所有 iPhone 和 iPad 版本的本地音频/视频文件?

swift - 如何使用 playerViewController 快速循环播放我的视频?

ios - 没有这样的模块 'FirebaseFirestore'

ios - 崩溃 : "Thread 1: EXC_BAD_ACCESS"?

ios - 如何在 ios 应用程序中检索 firebase 数据库中的数据?我的 JSON 数据如下所示,我想获取与问题文本 A...E 关联的每个值

opencv - 从视频流中获取像素数据

ios - 应用预览 : Record iOS-Simulator w/100% scale while showing 33% scale

ios - SWIFT 4 呈现 View Controller

ios - 有没有办法在运行时列出 iOS 应用程序中的钥匙串(keychain)访问组?

ios - 如何在后台使用 session.uploadTask 我正在崩溃