2016-04-14 14 views
0

Ich habe an einem kleinen Projekt gearbeitet, bei dem eine Videodatei von einem Webserver heruntergeladen, in das Dokumentenverzeichnis kopiert und dann über AVPlayer abgespielt wird.AVPlayer & Video aus Dokumentenverzeichnis

Das Herunterladen der Datei in das Dokumentenverzeichnis war kein Problem. Ich kann die Datei herunterladen und ohne Problem speichern. Wenn es jedoch darum geht, die Datei in den AVPlayer zu laden, und dabei in einer Instanz von AVPlayerViewController abgespielt wird, erscheint der vide-Controller so, wie er sollte, aber das Video wird nicht geladen.

Ich weiß, dass beim Testen im Simulator das Dokumentverzeichnis jedes Mal geändert wird, wenn Sie das Projekt neu erstellen. Deshalb überprüfe ich, ob die Datei vorhanden ist, bevor ich spiele, und obwohl ich weiß, dass die Datei vorhanden ist, weigert sie sich immer noch zu spielen.

Hier ist, was meine Spieler Code wie folgt aussieht:

 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() 
     } 

Antwort

0

Versuchen AVPlayer statt AVPlayerViewController wie

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() 

und Import AVKit, Import AVFoundation.

OR Mit Viewcontroller wie diese,

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() 
Verwandte Themen