Как убрать черную рамку, когда AVPlayer заменяет текущий AVPlayerItem?
Я пытаюсь воспроизводить видео, как это делает Instagram. Каждый раз, когда пользователь нажимает на экран, я должен играть следующий. Моя проблема в том, что я вижу черную рамку на плеере каждый раз, когда меняю видео. Если видео было записано на новом телефоне, черная рамка исчезает дольше.
Я пытался изменить AVPlayer
каждый раз, когда я переключаюсь между видео, это работает, но проигрыватель падает или перестает работать после 12 или 15 видео.
func startPlayer() {
configure()
play()
}
func playNext() {
guard let dataSource = dataSource else { return }
if playingIndex < dataSource.numberOfPlayerVideoViewItems() - 1 {
playItem(playingIndex + 1)
return
}
resetIndex()
startPlayer()
}
fileprivate func configure() {
guard let playerVideoItem = dataSource?.playerVideoView(self, playerVideoViewItemAt:playingIndex),
let videoURL = playerVideoItem.itemURL else { return }
NotificationCenter.default.removeObserver(self)
if player == nil {
player = AVPlayer.init(url: videoURL)
player?.automaticallyWaitsToMinimizeStalling = true;
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = bounds
playerLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill
layer.addSublayer(playerLayer)
} else {
player?.replaceCurrentItem(with: AVPlayerItem.init(url: videoURL))
}
NotificationCenter.default.addObserver(self, selector: #selector(videoDidFinish(_:)), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: self.player?.currentItem)
observeProgress(for: player!.currentItem!)
}