无法在 iOS 中播放文档目录中的视频

Posted

技术标签:

【中文标题】无法在 iOS 中播放文档目录中的视频【英文标题】:Can't play video from documentsDirectory in 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 并不是很有用。 【参考方案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)
    

【讨论】:

以上是关于无法在 iOS 中播放文档目录中的视频的主要内容,如果未能解决你的问题,请参考以下文章

iOS AVPlayer 无法播放 240 fps 视频

如何使用 avplayer 从文档目录播放视频文件

MP 电影播放器​​视图控制器滞后于 ios 中的视频播放

无法使用YTPlayerView在iOS上播放背景中的YouTube视频

我无法在 swift 2.3 中播放保存在目录路径和 AVPlayer 中的视频

uiwebview视频无法在IOS 12.2中播放