Как убрать черную рамку, когда AVPlayer заменяет текущий AVPlayerItem? - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь воспроизводить видео, как это делает 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!)
}
...