Существует жесткое ограничение на 16 видеоплееров одновременно на более новых устройствах 4 на старых устройствах (я хочу сказать, iphone 4s и обратно)

отаю надVideo на основе игрокаApplicationгде я должен играть несколькоVideos с помощьюAVPlayer, каждыйvideo должен играть с некоторымиCIFilter эффект, поэтому я используюVideoComposition для этого.

Моя проблема в том, когда есть более одногоVideo в моемVideoArray тогда сначалаVideo отлично играет со звуком, но когда он подходит к следующему видео, тоAVPlayer показывает черный экран, ноaudio звукVideo приближается. Я использую приведенный ниже общий метод всякий раз, когдаVideo играет:

private func createPlayerForVideoIndex(index: Int){

        guard let videoComposition = videoFilterComposition else { return }

        self.player?.pause()
        self.audioPlayer?.pause()

        playerLayer?.removeFromSuperlayer()

        let video = videoClipsArray.object(at: index) as! VideoFileModel
        playerItem = AVPlayerItem(url:NSURL(fileURLWithPath: video.localFilePath) as URL)
        playerItem?.videoComposition = videoComposition

        self.player = AVPlayer(playerItem: playerItem)

        playerLayer = AVPlayerLayer(player: player)

        playerLayer?.videoGravity = AVLayerVideoGravityResizeAspectFill
        playerLayer?.frame = CGRect(x:0, y:67, width:self.view.frame.size.width, height:250)

        self.view.layer.addSublayer(playerLayer!)



            if !myScrollView.isDescendant(of: self.view) {

                myScrollView.frame = (playerLayer?.frame)!
                myScrollView.delegate = self
                myScrollView.isPagingEnabled = true
                myScrollView.showsHorizontalScrollIndicator = false
                myScrollView.showsVerticalScrollIndicator = false
                myScrollView.backgroundColor = UIColor.clear

                self.view.addSubview(myScrollView)
            }

            self.view.bringSubview(toFront: self.pageControl)


            self.myScrollView.contentSize = CGSize(width:self.myScrollView.frame.size.width * 4,height: self.myScrollView.frame.size.height)

            let startSeconds : Int64 = Int64(video.leftRangeValue)
            let targetTime:CMTime = CMTimeMake(startSeconds, 1)
            self.player?.seek(to: targetTime)

            let endSeconds : Int64 = Int64(video.rightRangeValue)
            self.player?.currentItem?.forwardPlaybackEndTime = CMTimeMake(endSeconds, 1)

            self.player?.volume = videoVolumeSlider.value

            self.player?.play()
            self.audioPlayer?.play()

            self.player?.rate = video.slowFastMotionRate

    }

Я предполагаю, что должна быть проблема с вышеуказанным методом, который вызывается каждый раз для каждогоVideo (Я имею ввиду со следующим видео).

Может кто-нибудь, пожалуйста, предложите мне.

Ответы на вопрос(0)

Ваш ответ на вопрос