AVPlayer показывает черный экран при воспроизведении нескольких видео в Swift3 iOS
Я работаю над 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
(Я имею ввиду со следующим видео).
Может кто-нибудь, пожалуйста, предложите мне.