如何存储从 PhotoLibrary 中选择的视频的位置
How to store location of selected video from PhotoLibrary
select从照片库下载视频时,iOS 压缩视频并将其存储在 tmp/ 文件夹中。该位置作为“.mediaURL”返回,用于将视频加载到 AVPlayer 中。我试图保存 selected 视频的位置以便稍后播放,但我发现 tmp/ url 在关闭应用程序并重新打开后的某个时候被清除了。对于音乐,我可以存储 'persistentID' 以便稍后检索歌曲。我一直无法找到一种好方法来保留最初 selected 视频的位置,以便稍后可以重播它而不必在当前会话期间再次 select 它。寻找建议。
我正在为 iOS 使用 Swift 5。
谢谢...
当您使用 imagePicker select 来自图库的视频时,您需要将其复制到文档文件夹内的某处,以便您再次打开应用程序时能够持续引用它
这是我找到的解决方案:
要保存所选视频:
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)
select从照片库下载视频时,iOS 压缩视频并将其存储在 tmp/ 文件夹中。该位置作为“.mediaURL”返回,用于将视频加载到 AVPlayer 中。我试图保存 selected 视频的位置以便稍后播放,但我发现 tmp/ url 在关闭应用程序并重新打开后的某个时候被清除了。对于音乐,我可以存储 'persistentID' 以便稍后检索歌曲。我一直无法找到一种好方法来保留最初 selected 视频的位置,以便稍后可以重播它而不必在当前会话期间再次 select 它。寻找建议。
我正在为 iOS 使用 Swift 5。
谢谢...
当您使用 imagePicker select 来自图库的视频时,您需要将其复制到文档文件夹内的某处,以便您再次打开应用程序时能够持续引用它
这是我找到的解决方案:
要保存所选视频:
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)