2016-10-28 4 views
0

このコードのすべての機能は、View Controller上の単一のボタンです。ボタンはビデオを再生するはずです。今すぐコードにエラーメッセージはありません。ボタンが押されて何も起こらないということだけが起こります。エラーメッセージはありません。私が持っているのは、View Controllerの1つのページだけです。コードは以下の通りです。ビデオはスウィフトコードでは機能しません

playLocalVideoで
import UIKit 
import AVKit 
import AVFoundation 

class ViewController: UIViewController { 


var moviePlayer: AVPlayerViewController? 

override func viewDidLoad() { 
    super.viewDidLoad() 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
} 


@IBAction func playVideo(_ sender: UIButton) { 
    playLocalVideo() 
} 
func playLocalVideo(){ 

      if moviePlayer != nil { 
       do { 
        let filePath = Bundle.main.path(forResource: "t", ofType: "mp4") 

        let videoURL = NSURL(fileURLWithPath: filePath!) 


        let player = AVPlayer(url: videoURL as URL) 
        let playViewController = AVPlayerViewController() 

        playViewController.player = player 
        self.present(playViewController, animated: true) {() -> Void in playViewController.player!.play() 

        } 

       } catch { 
        print(error) 
       }}}} 
+0

ビデオをターゲットに追加しましたか? – Vinodh

+0

あなたの 'moviePlayer'はnilであり、' if moviePlayer!= nil'の中に入ることはありません。最初にインスタンス化します –

答えて

0

以下のコード

import UIKit 
import AVKit 
import AVFoundation 


class ViewController: UIViewController { 

    let moviePlayer = AVPlayerViewController() 


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




    func playLocalVideo(){ 

     if let filePath = Bundle.main.path(forResource: "t", ofType: "mp4"){ 
      let videoURL = NSURL(fileURLWithPath: filePath) 


      let player = AVPlayer(url: videoURL as URL) 


      moviePlayer.player = player 
      self.present(moviePlayer, animated: true) { 
       self.moviePlayer.player!.play() 
      } 
     } 

     else{ 
      print("Oops, something wrong when playing video.mp4") 
     } 
    } 


} 

を試してみて、ターゲットにビデオを追加するとき、それは1

enter image description here

以下のようなイメージではありません、それはようにする必要がありますことを確認してください下のもの

enter image description here

0

moviePlayer: AVPlayerViewController?が初期化されていない、それはゼロとなりますので、ボタンが押されたときに何も起こりません。

class ViewController: UIViewController { 
    let moviePlayer = AVPlayerViewController() 

    ... 
    ... 

    func playLocalVideo(){ 
      if let filePath = Bundle.main.path(forResource: "t", ofType: "mp4") { 
      let url = URL(fileURLWithPath: filePath) 
      let player = AVPlayer(url: url) 
      moviePlayer.player = player 
      present(moviePlayer, animated: true, completion: nil) 
     } 
    } 
} 
関連する問題