как воспроизвести видео в UIView Swift? - PullRequest
0 голосов
/ 02 июня 2018

У меня есть видео, которое я хочу загрузить с сервера и транслировать в режиме фиксированного просмотра.Я установил UIView в своей раскадровке с фиксированными ограничениями, и вот что я сделал в коде:

@IBOutlet weak var videoView: UIView!
var player: AVPlayer!
var avpController = AVPlayerViewController()

И в моем viewDidLoad я сделал это:

let url = URL(string:myURL)
player = AVPlayer(url: url!)

avpController.player = player
avpController.videoGravity = AVLayerVideoGravity.resizeAspect.rawValue
self.addChildViewController(avpController)
avpController.view.frame = videoView.frame
self.containerView.addSubview(avpController.view)
videoView.layer.masksToBounds = true

Моя проблема в том, что мое видео не соответствует размеру, который я установил videoView, и на каждом устройстве мое видео имеет разный размер.В некоторых устройствах высота видео больше, чем высота, которую я установил, и она перекрывает элементы, которые у меня ниже videoView.Как правильно воспроизвести видео в виде?

Ответы [ 3 ]

0 голосов
/ 02 июня 2018

Если вы хотите использовать AVPlayerViewController:

let videoURL = URL(string: "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4")
let player = AVPlayer(url: videoURL!)
let playerViewController = AVPlayerViewController()
playerViewController.player = player
self.present(playerViewController, animated: true) {
    playerViewController.player!.play()
}

Для AVPlayer:

let videoURL = URL(string: "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4")
let player = AVPlayer(url: videoURL!)
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = self.view.bounds
self.view.layer.addSublayer(playerLayer)
player.play()
0 голосов
/ 02 июня 2018

единственный способ добавить видео в UIView с фиксированными ограничениями в раскадровке:

let url = URL(string:myURL)

        player = AVPlayer(url: url!)

        avpController.player = player

        avpController.view.frame.size.height = videoView.frame.size.height

        avpController.view.frame.size.width = videoView.frame.size.width

        self.videoView.addSubview(avpController.view)

Я надеюсь, что другие могут использовать это!:)

0 голосов
/ 02 июня 2018

Вы можете попробовать использовать AVPlayerLayer в AVPlayer.

      let player = AVPlayer(url: video) // your video url
      let playerLayer = AVPlayerLayer(player: player)
      playerLayer.frame = videoView.bounds
      videoView.layer.addSublayer(playerLayer)
      player.play()
...