从照片库中选择视频时,iOS会压缩视频并将其存储在tmp /文件夹中。该位置将作为“ .mediaURL”返回,并用于将视频加载到AVPlayer中。我正在尝试保存所选视频的位置,以便以后可以播放,但是我发现在关闭应用程序并重新打开后,tmp / url在某个时候被清除了。对于音乐,我可以存储“ persistentID”以在以后检索歌曲。我还没有找到一种方法来保留最初选择的视频的位置,因此以后可以重播而不必在当前会话中再次选择它。寻找建议。
我正在使用iOS的Swift 5。
谢谢...
答案 0 :(得分:1)
使用imagePicker从图库中选择视频时,需要将其复制到文档文件夹中的某处,以便能够在再次打开应用程序时永久引用该视频
答案 1 :(得分:0)
这是我找到的解决方案:
要保存选定的视频,请执行以下操作:
func saveVideoToDirectory(videoUrl: NSURL) {
let videoData = NSData(contentsOf: videoUrl as URL)
let path = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
let newPath = path.appendingPathComponent("/backgroundVideo.mp4")
do {
try videoData?.write(to: newPath)
let movieData = NSKeyedArchiver.archivedData(withRootObject: newPath)
UserDefaults.standard.set(movieData, forKey: "movie")
//print("movie url: ", newPath)
} catch {
print(error)
}
}
获取视频:
let movieData = UserDefaults.standard.object(forKey: "movie") as? Data
let movieUrl = NSKeyedUnarchiver.unarchiveObject(with: data) as! URL
//search for current documents path
let docPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
let videoUrl = URL(fileURLWithPath: docPath.appendingFormat("/backgroundVideo.mp4"))
let playerItem = AVPlayerItem(url: videoUrl as URL)