2016-04-14 5 views
0

Я работал над небольшим проектом, который включает загрузку видеофайла с веб-сервера, копирование указанного файла в каталог документов, а затем воспроизведение его через AVPlayer.AVPlayer & video from documents directory

Загрузка файла в каталог документов не была проблемой. Я могу загрузить файл и сохранить его без проблем. Однако, когда дело доходит до загрузки файла в AVPlayer, и при этом я воспроизвожу его в экземпляре AVPlayerViewController, контроллер видео появляется, как следует, но видео не загружается.

Я понимаю, что при тестировании в симуляторе каталог документов меняется каждый раз при восстановлении проекта. Вот почему я проверяю, присутствует ли файл до начала игры, и хотя я знаю, что файл присутствует, он по-прежнему отказывается играть.

Вот что мой игрок код выглядит следующим образом:

 let fileName = downloadURL.characters.split("/").map(String.init).last as String! 
     let fileNameHD = downloadURLHD.characters.split("/").map(String.init).last as String! 
     let downloadFilePath = getDocumentsDirectory() + "/" + "\(fileNameHD)" 

     let checkValidation = NSFileManager.defaultManager() 

     if checkValidation.fileExistsAtPath(downloadFilePath){ 
      print("video found") 
     } 

     let videoFile = NSURL(string:downloadFilePath) 
     let player = AVPlayer(URL: videoFile!) 
     let playerController = AVPlayerViewController() 
     playerController.player = player 
     playerController.view.frame = self.view.frame 
     player.play() 
     self.presentViewController(playerController, animated: true) { 
      playerController.player!.play() 
     } 

ответ

0

Попробуйте AVPlayer вместо AVPlayerViewController как,

let videoURL = NSURL(string: "your url string") 
let player = AVPlayer(URL: videoURL!) 
let playerLayer = AVPlayerLayer(player: player) 
playerLayer.frame = self.view.bounds 
self.view.layer.addSublayer(playerLayer) 
player.play() 

и импортного AVKit, импорт AVFoundation.

OR С ViewController, как это,

let player = AVPlayer(URL: url) 
let playerController = AVPlayerViewController() 

playerController.player = player 
self.addChildViewController(playerController) 
self.view.addSubview(playerController.view) 
playerController.view.frame = self.view.frame 

player.play()