【问题标题】:Create VideoPlayer With Custom Size in Swift 3在 Swift 3 中创建具有自定义大小的 VideoPlayer
【发布时间】:2017-06-30 12:05:08
【问题描述】:

我想以自定义大小显示 .mov 文件。我的控制器有一个 xib 文件。

顶视图是 UIView 的子类。我想在这个视图中显示视频。 有我用于创建视频视图的代码。但我的视频播放器大小有问题。如何解决这个问题。

这是我的代码:

 private func playVideo() {
    guard let path = Bundle.main.path(forResource: "video_2017-06-30_15-49-05", ofType:"mov") else {
      debugPrint("video.m4v not found")
      return
    }
    let player = AVPlayer(url: URL(fileURLWithPath: path))
    let playerController = AVPlayerViewController()
    playerController.player = player

    let avPlayerLayer = AVPlayerLayer(player: player)
    avPlayerLayer.frame = videoView.layer.frame
    videoView.layer.insertSublayer(avPlayerLayer, at: 0)


  }

【问题讨论】:

  • 在您的自定义UIView 中添加您的播放器layer frame
  • @AnuragSharma 怎么办?

标签: ios swift3 avfoundation avkit


【解决方案1】:

如果您希望使用搜索栏和播放暂停按钮将本机播放器添加到您的视图中,请使用以下代码:

private func playVideo() {
        guard let path = Bundle.main.path(forResource: "SampleVideo", ofType:"mp4") else {
            debugPrint("video.m4v not found")
            return
        }
        let player = AVPlayer(url: URL(fileURLWithPath: path))
        let playerController = AVPlayerViewController()
        playerController.player = player
        playerController.view.frame = videoView.bounds
        videoView.addSubview(playerController.view)
        player.play()
    }

如果您只想使用 AVPlayerLayer 在您的视图中播放视频,那么您可以执行以下操作:

    var player : AVPlayer!
    var avPlayerLayer : AVPlayerLayer!
    @IBOutlet weak var videoView: UIView!

    override func viewDidLoad() {
        super.viewDidLoad()


        guard let path = Bundle.main.path(forResource: "SampleVideo", ofType:"mp4") else {
            debugPrint("video.m4v not found")
            return
        }
        player = AVPlayer(url: URL(fileURLWithPath: path))
        avPlayerLayer = AVPlayerLayer(player: player)
        avPlayerLayer.videoGravity = AVLayerVideoGravity.resize

        videoView.layer.addSublayer(avPlayerLayer)
        playVideo()


    }

    override func viewDidLayoutSubviews() {

        avPlayerLayer.frame = videoView.layer.bounds
    }

    private func playVideo() {
        player.play()

    }

这对我来说很完美,希望对你有用:)

【讨论】:

  • 感谢您的回答,但仍然不适用于我,我正在更新我的问题图片以获得新结果
  • 没有什么可以暂停或播放视频:|
  • 我不知道它是否可行,但试试这个 avPlayerLayer.frame = videoView.layer.bounds
  • 我在写视频播放器时仍有空白。开始视频没有任何内容
猜你喜欢
  • 1970-01-01
  • 2018-10-17
  • 2016-10-20
  • 2018-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-05
相关资源
最近更新 更多