如何使用iOS swift中的AVPlayer访问iOS文件应用程序中的视频文件?

如何使用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

我正在尝试访问iOS文件应用程序中的视频文件。尝试使用AVPlayer播放视频

我能够访问视频,但在尝试访问同一视频一段时间后,我从AVPlayer收到错误

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获取它。是否有其他方法可以直接访问它并保存临时文件夹的实例?复制视频文件会增加应用程序的大小,并导致其他一些问题。我不知道这种方法。如果您只在部分时间使用这些文件,那么您可以在完成这些文件后直接删除它们。但是如果你需要很长一段时间,那么你必须一直拥有它们的副本。是的,这是有道理的。谢谢你,伙计。