AVPlayer在Swift3 iOS中播放多个视频时显示黑屏

AVPlayer在Swift3 iOS中播放多个视频时显示黑屏,ios,video,swift3,avplayer,avplayerlayer,Ios,Video,Swift3,Avplayer,Avplayerlayer,我正在开发基于播放器的应用程序,其中我必须播放多个视频 视频使用AVPlayer。每个video都必须使用一些CIFilter效果,因此我使用VideoComposition来实现这一点 我的问题是,当我的VideoArray中有多个视频时,首先Video可以完美地播放音频,但当它播放到下一个视频时,AVPlayer会显示黑屏,但音频的声音会出现。每当播放视频时,我都会调用以下常用方法: private func createPlayerForVideoIndex(index: Int){

我正在开发基于播放器的
应用程序
,其中我必须播放多个视频
视频
使用
AVPlayer
。每个
video
都必须使用一些
CIFilter
效果,因此我使用
VideoComposition
来实现这一点

我的问题是,当我的
VideoArray
中有多个
视频时,首先
Video
可以完美地播放音频,但当它播放到下一个视频时,
AVPlayer
会显示黑屏,但
音频
的声音会出现。每当播放
视频时,我都会调用以下常用方法:

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

    }
我想,上面的方法应该有问题,每次调用每个
视频
(我指的是下一个视频)


任何人都可以推荐我。

老实说,我没有阅读完整的问题,但尝试使用单独的播放器,如为
createPlayerForVideoIndex
@PrashantTukadiyaNo问题创建新的播放器对象,谢谢您的回答。当我评论这行“playerItem.videoComposition=videoFilterComposition”时,它工作得很好。顺便问一下,你能告诉我如何在这里分离播放器吗?我想你使用的是同一个播放器对象,这可能是个问题,所以我建议每次都创建一个新的播放器对象。这很好,但我不认为问题出在播放器上,因为我得到了正确的视频声音,只有显示器变黑了。新设备上一次只能有16个视频播放器,旧设备上只能有4个(我想说iphone 4s和其他),老实说,我没有读完整的问题,但尝试单独的播放器,比如为
createPlayerForVideoIndex
@PrashantTukadiyaNo问题创建新的播放器对象,谢谢你的回答。当我评论这行“playerItem.videoComposition=videoFilterComposition”时,它工作得很好。顺便问一下,你能告诉我如何在这里分离播放器吗?我想你使用的是同一个播放器对象,这可能是个问题,所以我建议每次都创建一个新的播放器对象。这很好,但我不认为问题出在播放器上,因为我得到了正确的视频声音,只有显示器变黑了。在较新的设备上一次只能播放16个视频播放器,在较旧的设备上只能播放4个视频播放器(我想说的是iphone 4s和iphone 4s)