Как изменить режим контента на видео AVPlayer? - PullRequest
0 голосов
/ 27 мая 2019

Моя проблема в том, что когда я показываю видео, оно больше моего размера экрана. Возможно, проблема не в режиме контента, а в неправильных границах кадра или что-то в этом роде.

let theURL = Bundle.main.url(forResource:"videkas", withExtension: "mp4")

    avPlayer = AVPlayer(url: theURL!)
    avPlayerLayer = AVPlayerLayer(player: avPlayer)
    avPlayerLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill
    avPlayer.volume = 0
    avPlayer.actionAtItemEnd = .none

    avPlayerLayer.frame = (featureView13?.bounds)!
    featureView13?.backgroundColor = .clear
    featureView13?.layer.insertSublayer(avPlayerLayer, at: 0)

    NotificationCenter.default.addObserver(self,
                                           selector: #selector(playerItemDidReachEnd(notification:)),
                                           name: NSNotification.Name.AVPlayerItemDidPlayToEndTime,
                                           object: avPlayer.currentItem)

Я также пытался avPlayerLayer.frame = (featureView13?.layer.bounds)!, но не повезло.

Ответы [ 4 ]

0 голосов
/ 27 мая 2019

Попробуйте использовать,

avPlayerLayer.frame = (featureView13?.bounds)!
avPlayerLayer.videoGravity = .resizeAspect
avPlayerLayer.contentsGravity = .resizeAspect
0 голосов
/ 27 мая 2019

Измените resizeAspectFill на resizeAspect. Существует большая разница!

0 голосов
/ 27 мая 2019

используйте AVLayerVideoGravity.resizeAspectFit для размещения видео на экране:

avPlayerLayer.videoGravity = AVLayerVideoGravity.resizeAspectFit
0 голосов
/ 27 мая 2019

Это может работать для вас https://gist.github.com/jkosoy/c835fea2c03e76720c77

Вызовите этот метод, когда ваше видео начало буферизовать

DispatchQueue.main.async {
    let size = CGSize.aspectFit(aspectRatio: self. avPlayerLayer.frame.size, boundingSize: self.view.frame.size)
    self.avPlayerLayerHeightContraint.constant = size.height
    self.avPlayerLayer.layoutIfNeeded()
}

Надеюсь, вы получите желаемый результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...