2017-02-21 2 views
1

Immer wenn ich das Projekt starte, wird der Videoplayer hochgefahren, aber das Video wird nicht wiedergegeben  (the code and error). Wie behebe ich das? Falls der Code in das Bild nicht klar genug, hier ist der Code:Wiedergabe von lokalem Video mit Avplayer/Kit Problem

import UIKit 
import AVKit 
import AVFoundation 


class ViewController: UIViewController { 

    let avPlayerViewController = AVPlayerViewController() 
    var avPlayer:AVPlayer? 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from nib. 

     let urlPathString = Bundle.main.path(forResource: "small", ofType: "mp4") 

     if urlPathString != nil { 

      let movieUrl = NSURL(fileURLWithPath: "/Users/kevingerman/Desktop/Pioneer News Season 2 Episode 1.mp4") 

      self.avPlayer = AVPlayer(url: movieUrl as URL) 
      self.avPlayerViewController.player = self.avPlayer 

     } 
    } 



    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


    @IBAction func playButtonTapped(_ sender: AnyObject) { 
     //Trigger the video to play 
     self.present(self.avPlayerViewController, animated: true) {() -> Void in self.avPlayerViewController.player?.play() } 


    } 

}

+0

Ist die Filmdatei in Ihrem Projekt enthalten? Öffnen Sie den Projektnavigator (cmd - 1) Wählen Sie dann Ihr Projekt root> Ihr Ziel> Build Phases> Bundle Ressourcen kopieren. Ihr Video muss hier sein. Wenn dies nicht der Fall ist, sollten Sie es mit der Plus-Schaltfläche hinzufügen. – cpatmulloy

+0

Warum überprüfen Sie die Zeichenfolge 'urlPathString' für nil und fügen dann eine weitere URL für AVPlayer hinzu? –

Antwort

0

Achten Sie darauf, Ihre urlPathString nicht gleich Null ist. Ich weiß nicht, was der folgende Code bedeuten:.

let movieUrl = NSURL(fileURLWithPath: "/Users/kevingerman/Desktop/Pioneer News Season 2 Episode 1.mp4") 

Ich denke, der Simulator nicht den Pfad der Datei, die in Ihrem Mac bekommen (ich bin nicht sicher, ich habe dies vorher nicht tun) . Sie können die Zielmitgliedschaft der Datei überprüfen.

enter image description here

Der Code kann wie folgt funktionieren:

var urlPaht = Bundle.main.url(forResource: "small", withExtension:"mp4") 
if urlPaht == nil { 
     urlPaht = NSURL(fileURLWithPath: "/Users/kevingerman/Desktop/Pioneer News Season 2 Episode 1.mp4") 
} 
self.avPlayer = AVPlayer(url: movieUrl as URL) 
self.avPlayerViewController.player = self.avPlayer 
1

Die Lösungen im Kommentar vorgeschlagen, und die eine @Guan beantwortet sind beide richtig.

Ihre urlPathString NIL ist eigentlich hier,

, damit es funktioniert -

1- Entweder das Ziel Mitgliedschaft hinzuzufügen, wie oben in dem Kommentar und die Antwort vorgeschlagen oder

Führen Sie folgende Schritte durch:

1.1- Löschen Sie die Datei small.mp4 aus dem Bundle. stellen Sie sicher, move it to trash

2.1 - Zum Müll und per Drag & Drop Ihre mp4-Datei in das Projekt erneut, erscheint ein Fenster wie diese erhalten - Window on drag and drop

Während es zurück Zugabe stellen Sie sicher -

überprüfen Sie die Checkbox projectTarget wie der Screenshot unten -

Checked box for app target

Stellen Sie sicher, der Dateiname small.mp4 ist