在容器视图中播放本地视频 Swift 4.



我正在尝试在名为AVPlayerViewController的容器视图中播放视频,但是当您单击播放器视图以播放视频时,它无法播放。有什么办法可以解决这个问题吗?这是我用来尝试播放视频的代码:

import UIKit
import AVKit
class IntroductionViewController: UIViewController {
    var avPlayer: AVPlayer!
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    func playVideo() {
        let filepath: String? = Bundle.main.path(forResource: "Video", ofType: "mp4")
        let fileURL = URL.init(fileURLWithPath: filepath!)
        avPlayer = AVPlayer(url: fileURL)
        let avPlayerController = AVPlayerViewController()
        avPlayerController.player = avPlayer
        avPlayerController.showsPlaybackControls = true
        avPlayerController.view.frame = CGRect(x: 44, y: 128, width: UIScreen.main.bounds.size.width, height: UIScreen.main.bounds.size.height)
        // Turn on video controlls 
          avPlayerController.showsPlaybackControls = true
        // play video
        avPlayerController.player?.play()
        self.view.addSubview(avPlayerController.view)
    }
}

您的代码中存在一些概念错误;如果您希望您的 IntroductionViewController 封装视频,则应将 AVPlayerViewController 添加为子项:

import UIKit
import AVKit
class IntroductionViewController: UIViewController {
    var avPlayer: AVPlayer!
    override func viewDidLoad() {
        super.viewDidLoad()
        playVideo()
    }
    func playVideo() {
        let filepath: String? = Bundle.main.path(forResource: "videoplayback", ofType: "mp4")
        let fileURL = URL.init(fileURLWithPath: filepath!)
        avPlayer = AVPlayer(url: fileURL)
        let avPlayerController = AVPlayerViewController()
        avPlayerController.player = avPlayer
        avPlayerController.view.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: UIScreen.main.bounds.size.height)
        // Turn on video controlls
        avPlayerController.showsPlaybackControls = true
        // play video
        avPlayerController.player?.play()
        self.view.addSubview(avPlayerController.view)
        self.addChild(avPlayerController)
    }
}

但是您的 IntroductionViewController 也可以扩展 AVPlayerViewController:

import UIKit
import AVKit
class AVViewController: AVPlayerViewController {
    var avPlayer: AVPlayer!
    override func viewDidLoad() {
        super.viewDidLoad()
        setupAndPlay()
    }
    func setupAndPlay() {
        let filepath: String? = Bundle.main.path(forResource: "videoplayback", ofType: "mp4")
        let fileURL = URL.init(fileURLWithPath: filepath!)
        // Setup AVPlayer
        avPlayer = AVPlayer(url: fileURL)
        self.player = avPlayer
        self.view.frame = CGRect(x: 44, y: 128, width: UIScreen.main.bounds.size.width, height: UIScreen.main.bounds.size.height)
        // Turn on video controlls
        self.showsPlaybackControls = true
        // play video
        self.player?.play()
    }
}

选择您的方式:)

最新更新