如何使用iOS swift中的AVPlayer访问iOS文件应用程序中的视频文件?
我正在尝试访问iOS文件应用程序中的视频文件。尝试使用AVPlayer播放视频 我能够访问视频,但在尝试访问同一视频一段时间后,我从AVPlayer收到错误如何使用iOS swift中的AVPlayer访问iOS文件应用程序中的视频文件?,ios,swift,avplayer,avplayeritem,Ios,Swift,Avplayer,Avplayeritem,我正在尝试访问iOS文件应用程序中的视频文件。尝试使用AVPlayer播放视频 我能够访问视频,但在尝试访问同一视频一段时间后,我从AVPlayer收到错误 let filemgr = FileManager.default let docsDirURL = try! filemgr.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true) let lastComp = doc
let filemgr = FileManager.default
let docsDirURL = try! filemgr.url(for: .documentDirectory,
in: .userDomainMask, appropriateFor: nil, create: true)
let lastComp = docsDirURL.lastPathComponent
let pathy = "\(docsDirURL)"
if let urls = lap.videoURLs {
self.lap = lap
for url in urls {
let urlComps = "\(url)".components(separatedBy: "/")
var urlpath = ""
for (index, element) in urlComps.enumerated() {
if index > 9{
urlpath += element + "/"
}
}
print(urlpath)
var pathz = pathy.replacingOccurrences(of: lastComp, with: urlpath)
pathz = String(pathz.dropLast(2))
print(pathz)
let finalURL = NSURL(string: pathz)
// let playerItem = AVPlayerItem(url: url as URL)
let playerItem = AVPlayerItem(url: finalURL! as URL)
playerItem.addObserver(self, forKeyPath: "status", options: .new,
context: &itemStatusContext)
self.playerItems.append(playerItem)
if self.queuePlayer == nil {
self.queuePlayer = AVPlayer(playerItem: playerItem)
}
}
}
我希望像以前一样正常播放视频,但我只能访问一段时间,比如一分钟,然后在收到错误后
可选(Error Domain=NSURErrorDomain Code=-1100“在该服务器上找不到请求的URL”。“用户信息={NSLocalizedDescription=在此服务器上找不到请求的URL,”,NSUnderlyingError=0x283368f90{Error Domain=NSPOSIXErrorDomain Code=2“没有这样的文件或目录”}}),URL:[,]
因此,正如错误“无此类文件或目录”中所述,缺少一个文件。关于它存储在临时文件夹中的完整路径。您可能通过
UIDocumentPickerViewController
或类似组件导入了这些文件。您必须立即(同步)将提供的文件复制到同一代码块中,在该代码块中您可以将URL复制到某个本地存储,以避免出现这种情况。是的,我正在从UIDocumentPickerViewController获取它。是否有其他方法可以直接访问它并保存临时文件夹的实例?复制视频文件会增加应用程序的大小,并导致其他一些问题。我不知道这种方法。如果您只在部分时间使用这些文件,那么您可以在完成这些文件后直接删除它们。但是如果你需要很长一段时间,那么你必须一直拥有它们的副本。是的,这是有道理的。谢谢你,伙计。