我目前正在尝试构建一个以 VR 格式显示 360 度视频的应用程序。当我将视频保存为 Xcode 项目内的文件时,该视频可以正常播放。但是,当我尝试从存储在 Dropbox 中的文件的链接播放视频时,会发生错误。我必须通过链接而不是应用程序内置的文件来播放它,因为视频长 30 分钟,因此占用了大量存储空间。当我尝试播放视频时,我在视频应该出现的地方遇到了白屏,并且标题中的此错误代码在输出框中不断重复。我在这里看到过关于类似问题的其他帖子,但据我所知,没有人找到答案,所以我认为其他人也在寻找答案。这是我下载视频的代码:
func downloadVideo(from url: URL, completion: @escaping (Bool) -> Void) {
let task = URLSession.shared.downloadTask(with: url) { (tempURL, response, error) in
if let tempURL = tempURL {
destinationURL = self.getDocumentsDirectory().appendingPathComponent("video.mp4")
do {
if FileManager.default.fileExists(atPath: destinationURL!.path) {
try FileManager.default.removeItem(at: destinationURL!)
}
try FileManager.default.moveItem(at: tempURL, to: destinationURL!)
completion(true)
} catch {
print("Error saving video: \(error.localizedDescription)")
completion(false)
}
} else {
completion(false)
}
}
task.resume()
}
@IBAction func timeToDownloadPressed(_ sender: UIButton){
if isVideoDownloaded == false{
downloadVideo(from: URL(string: "THE_VIDEO_LINK")!) { success in
if isVideoDownloaded == false {
isVideoDownloaded = true
print("Video downloaded and saved.")
fileURL = destinationURL
} else {
print("Error downloading video.")
}
}
}
}
func getDownloadedVideoURL() -> URL {
let destinationURL = getDocumentsDirectory().appendingPathComponent("video.mp4")
return destinationURL
}
func getDocumentsDirectory() -> URL {
return FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
}
仅供参考,变量 fileURL 是最终 AVPlayer URL 的存储位置。
起初,我尝试通过将 AVPlayer URL 设置为链接来直接从链接播放视频,但是当这不起作用时,我想到尝试下载视频并将其作为文件存储在应用程序中当视频来自应用程序中的文件时,视频通常可以正常播放,但这会导致相同的错误。我尝试了多个版本的代码来下载视频但没有成功。我发现的唯一信息是,这可能是一个编码问题,但我对此相对较新,不知道如何解决这个问题。