我正在尝试在名为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()
}
}
选择您的方式:)