2017-08-02 3 views
0

Ich muss kontinuierlich ein Video im Temp-Verzeichnis gespeichert zu spielen.Load Temp Video und spielen

func setVideo(url vid: String!) { 

    let directory = NSTemporaryDirectory() 

    let tempURL = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent("tempMovie\(Date().timeIntervalSince1970)").appendingPathExtension("mp4") 

    let tempFile = NSURL.fileURL(withPathComponents: [directory]) 


    let file = vid.components(separatedBy: ".") 

    guard let path = Bundle.main.path(forResource: "\(tempURL)", ofType:file[2]) else { 
     debugPrint("\(file.joined(separator: ".")) not found with path: \(file[0] + "." + file[1])") 
     return 
    } 
    let player = AVPlayer(url: URL(fileURLWithPath: path)) 

    let playerLayer = AVPlayerLayer(player: player) 
    playerLayer.frame = self.view.bounds 
    self.videoView.layer.addSublayer(playerLayer) 
    player.play() 


    NotificationCenter.default.addObserver(forName: .AVPlayerItemDidPlayToEndTime, object: self.player.currentItem, queue: nil, using: { (_) in 
     DispatchQueue.main.async { 
      self.player?.seek(to: kCMTimeZero) 
      self.player?.play() 
     } 
    }) 

} 

Das Video Lage und Datei-URL ist:

file:///private/var/mobile/Containers/Data/Application/E7D12401-F147-4905-83BE-72909F91E004/tmp/tempMovie1501672791.33525.mp4 

Die kontinuierliche Schlaufenteil aus einem früheren Projekt arbeitet jedoch kann ich nicht in den Player zu laden, scheinen die temp gespeichert Video. Ich habe versucht, das Temp-Verzeichnis manuell zu bekommen, aber es hat nicht funktioniert.

Antwort

1

Das Video von tmp in das Documents-Verzeichnis zu verschieben funktionierte für mich.

Dies ist, wie Sie es tun:

let documentsDirectoryURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first! 

    let destinationURL = documentsDirectoryURL.appendingPathComponent("filename.fileExtension") 

     do { 

      try FileManager.default.moveItem(at: previousTempLocation, to: destinationURL) 

     } catch let error as NSError { print(error.localizedDescription)} 

    let player = AVPlayer(url: destinationURL)  

Apple sagt, das auf/tmp-Verzeichnis

Sie mit diesem Verzeichnis temporäre Dateien zu schreiben, die auf bestehen müssen nicht zwischen Starts Ihrer App . Ihre App sollte die Dateien aus diesem Verzeichnis entfernen, wenn sie nicht mehr benötigt werden. Das System kann dieses Verzeichnis jedoch löschen, wenn Ihre App nicht ausgeführt wird.

Apple empfiehlt dies auch für Benutzerdaten

Put Benutzerdaten in Dokumente /. Benutzerdaten umfassen im Allgemeinen alle Dateien , die Sie dem Benutzer möglicherweise bereitstellen möchten - alles, was der Benutzer erstellen, importieren, löschen oder bearbeiten darf. Video- und Audio-Apps können sogar Dateien enthalten, die der Benutzer heruntergeladen hat, um sie später anzusehen oder anzuhören.

Verwandte Themen