2017-01-10 17 views
0

Я пытаюсь воспроизвести видео, загруженное в каталог документов устройства. По какой-то причине этого не произойдет. Все, что я получаю этот символ:Невозможно воспроизвести видео из документов. Справочник в iOS

enter image description here

Вот мой код:

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 заявления ISN» т. На консоль ничего не печатается.

Любая помощь будет оценена по достоинству.

+2

Вы передаете 'videoFileUrl' в' AVPlayer'. Вместо этого используйте 'URL (string: videoFilePath)!'. 'videoFileUrl' относится к каталогу документов, тогда как' videoFilePath' относится к самому файлу. –

+0

Oups - это была типография - я исправил код. –

+0

Не использовать URL-адрес (строка: 'для строкового пути в файловой системе. ** ** должен использовать ~ URL (файлURLWithPath:' (URL с прописными буквами!), Потому что только этот инициализатор добавляет 'файл : // 'схема. В любом случае не очень полезно воссоздать URL-адрес с пути URL-адреса. – vadian

ответ

0

Вот ответ, который был отредактирован в вопросе (и который впоследствии был откат, потому что ответы должны отвечать). Если 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) 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^