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

How to access the Video files, which are present in iOS Files App using AVPlayer in iOS swift?

我正在尝试访问存在于 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)
    }
  }
}

我希望能像以前一样正常播放视频,但我只能访问它一分钟之类的时间,然后在收到错误消息后。

Optional(Error Domain=NSURLErrorDomain Code=-1100 "The requested URL was not found on this server." UserInfo={NSLocalizedDescription=The requested URL was not found on this server., NSUnderlyingError=0x283368f90 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}) and URLS: [<AVPlayerItem: 0x283c1d4a0, asset = <AVURLAsset: 0x2878f41c0, URL = file:///var/mobile/Containers/Data/Application/0CE62F51-77E0-4630-A3C4-1CE615ACCD26/tmp/uk.co.racelogic.Circuit-Tools-for-iOS-Inbox/VBOX0005_0001.mp4>>, <AVPlayerItem: 0x283c1d850, asset = <AVURLAsset: 0x2878f5520, URL = file:///var/mobile/Containers/Data/Application/0CE62F51-77E0-4630-A3C4-1CE615ACCD26/tmp/uk.co.racelogic.Circuit-Tools-for-iOS-Inbox/VBOX0005_0002.mp4>>]

因此如错误"No such file or directory"所述,文件不存在。关于它存储在临时文件夹中的完整路径。可能您通过 UIDocumentPickerViewController 或类似组件导入了这些文件。您必须立即(同步)将提供的文件复制到您获取 URL 的同一代码块中,以避免出现这种情况。