【问题标题】:Can't play video from documentsDirectory in iOS无法在 iOS 中播放文档目录中的视频
【发布时间】:2017-01-10 10:27:46
【问题描述】:

我正在尝试播放下载到设备文档目录的视频。由于某种原因,它不会发生。我得到的只是这个符号:

这是我的代码:

let documentPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as String
let videoFileUrl = URL(fileUrlWithPath: documentPath)
let videoFilePath = videoFileUrl.appendingPathComponent("somVideo.mp4").path
if FileManager.default.fileExists(atPath: videFilePath){
    let player = AVPlayer(url: URL(string: videoFilePath)!)
    let playerViewController = AVPlayerViewController()
    playerViewController.player = player
    self.present(playerViewController, animated: true) {
        playerViewController.player!.play()
    }
}
else {
    print("File doesn't exist")
}

该文件存在于该位置 - 我已经检查了模拟器的文档目录 - 并且 else 语句没有被触发。控制台不会打印任何其他内容。

任何帮助将不胜感激。

【问题讨论】:

  • 您将videoFileUrl 传递给AVPlayer。请改用URL(string: videoFilePath)!videoFileUrl 指的是文档目录,而videoFilePath 指的是文件本身。
  • Oups - 这是一个错字 - 我已经修复了代码。
  • 永远不要在文件系统中使用URL(string: 作为字符串路径。您必须使用URL(fileURLWithPath:(带有大写字母的URL!),因为只有这个初始化程序添加了file:// 方案。无论如何,从 URL 的路径重新创建 URL 并不是很有用。

标签: ios iphone swift3 avfoundation avkit


【解决方案1】:

这是 OP 编辑​​到问题中的答案(后来因为答案应该是答案而被回滚)。如果 OP 发布一个单独的答案,我会删除这个。


在我的一位同事的帮助下,我设法让它工作起来。如果有人感兴趣的话,这里是答案:

let urls = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
if let docDir : URL = urls.first {
    let videoUrl = docDir.appendingPathComponent("\(objectId).mp4")
    do {
        let videoExists : Bool = try videoUrl.checkResourceIsReachable()
        if videoExists {
            let player = AVPlayer(url: videoUrl)
            let playerController = AVPlayerViewController()
            playerController.player = player
            self.present(playerController, animated: true) {
                playerController.player!.play()
            }
        }
        else {
            print("Video doesn't exist")
        }
    }
    catch let error as NSError {
        print(error)
    }
}

【讨论】:

    猜你喜欢
    • 2016-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-21
    • 2013-03-13
    • 1970-01-01
    相关资源
    最近更新 更多