播放下载到缓存目录中的歌曲

问题描述 投票:1回答:1

下载mp3并将其保存到Library / caches文件夹中,但稍后访问它不会。

检查歌曲是否真的存在,我打开Finder并转到模拟器文件夹。我的文件夹看起来像这样:

image

我的歌曲位于:Library / Caches / Digger / Flower.mp3

尝试使用AVPlayer访问它:

    let folderName = "Digger"
    let fileName = "Flower.mp3"
    let url = FileManager.default
        .urls(for: .cachesDirectory, in: .userDomainMask)[0]
        .appendingPathComponent(folderName).appendingPathComponent(fileName)
    var urlString = url.absoluteString
    print("MyPath: \(urlString)")
    urlString.removeSubrange(urlString.range(of: "file://")!)

    let player = AVPlayer(url: URL(string: urlString)!)

    let playerViewController = AVPlayerViewController()
    playerViewController.player = player
    self.present(playerViewController, animated: true) {

        player.play()
    }

但它不起作用。

运行时模拟器截图:

screenShot1

swift
1个回答
1
投票

您的URL处理不正确。

替换这些行:

var urlString = url.absoluteString
print("MyPath: \(urlString)")
urlString.removeSubrange(urlString.range(of: "file://")!)

let player = AVPlayer(url: URL(string: urlString)!)

有:

let player = AVPlayer(url: url)

url已经是您需要的URL。无需尝试以任何方式转换它。

作为参考,使用url.path将文件URL转换为路径字符串。如果你需要从路径字符串创建一个URL,使用URL(fileURLWithPath:),而不是URL(string:)。仅将URL(string:)与具有URL方案的字符串一起使用,例如file://https://等。

© www.soinside.com 2019 - 2024. All rights reserved.