Воспроизведение локального видео в представлении контейнера Swit 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)
}
}
0 ответов
В вашем коде есть некоторые концептуальные ошибки; если вы хотите, чтобы ваш вводный элемент ViewViewController инкапсулировал видео, следует добавить 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)
}
}
Но ваш Введение ViewController может также расширить 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()
}
}
Выбери свой путь:)