【问题标题】:Playing a local Video in a container view Swift 4在容器视图中播放本地视频 Swift 4
【发布时间】:2018-03-05 09:25:23
【问题描述】:

我正在尝试在名为 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)

    }
}

【问题讨论】:

  • 任何崩溃日志?
  • 没有崩溃日志。视频无法播放,但应用仍在运行。
  • 我检查过了,只要你在应用程序的那个部分,它就会播放视频。当我点击视图控制器时,我需要播放视频
  • 你能告诉我你在哪里打电话给playVideo()吗?

标签: ios swift avplayer avkit


【解决方案1】:

您的代码中有一些概念性错误;如果您希望您的 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()
    }
}

选择你的方式:)

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2020-01-04
  • 1970-01-01
  • 2014-10-10
  • 2011-12-06
  • 2014-05-01
  • 2021-10-27
  • 1970-01-01
相关资源
最近更新 更多