【问题标题】:Video not working on with swift code视频无法使用快速代码
【发布时间】:2016-10-28 02:44:44
【问题描述】:

所有这些代码功能都是视图控制器上的一个按钮。该按钮应播放视频。现在代码中没有错误消息。所发生的只是按钮被按下并且没有任何反应。没有错误信息。我只有一个视图控制器页面。代码如下所示。

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

【问题讨论】:

  • 您是否检查过添加到目标的视频?
  • 你的 moviePlayer 是 nil 并且永远不会进入 if moviePlayer != nil。所以先实例化它

标签: ios swift video swift3 avplayerviewcontroller


【解决方案1】:

试试下面的代码

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


}

并确保在将视频添加到目标时,它不应该是像下面这样的图像

应该和下面的一样

【讨论】:

    【解决方案2】:

    在 playLocalVideo 中,moviePlayer: AVPlayerViewController? 没有被初始化,它将是 nil,所以当按下按钮时没有任何反应。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-16
      • 1970-01-01
      • 1970-01-01
      • 2017-10-25
      • 1970-01-01
      • 2014-06-06
      • 2021-03-23
      • 1970-01-01
      相关资源
      最近更新 更多