Воспроизведение локального видео в представлении контейнера 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()
    }
}

Выбери свой путь:)

Другие вопросы по тегам