Как убрать черную рамку, когда 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!)
}

0 ответов

Другие вопросы по тегам