下载mp3并将其保存到“ Library / caches”文件夹中是可行的,但是以后再访问它则无效。
检查歌曲真的是否存在,我打开Finder进入模拟器文件夹。我的文件夹如下所示:
我的歌曲位于: 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()
}
但是它不起作用。
运行时的模拟器截图:
答案 0 :(得分: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:)
与具有file://
,https://
等URL方案的字符串一起使用。