Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift3 swift 3视频在AVPlayer中仅播放声音无视频第二次_Swift3_Avplayer_Avplayerlayer - Fatal编程技术网

Swift3 swift 3视频在AVPlayer中仅播放声音无视频第二次

Swift3 swift 3视频在AVPlayer中仅播放声音无视频第二次,swift3,avplayer,avplayerlayer,Swift3,Avplayer,Avplayerlayer,在我的应用程序中,我使用了AVPlayer,视频第一次播放得很好,当我返回并再次来到播放器屏幕时,该层正在显示,视频声音也在显示,但视频没有显示。这是我的密码 if (videoPlaying == true) { videoView.isHidden = false let targetTime:CMTime = CMTimeMake(0, 1) videoPlayer.seek(to: targetTime)

在我的应用程序中,我使用了AVPlayer,视频第一次播放得很好,当我返回并再次来到播放器屏幕时,该层正在显示,视频声音也在显示,但视频没有显示。这是我的密码

 if (videoPlaying == true) {

            videoView.isHidden = false
            let targetTime:CMTime = CMTimeMake(0, 1)
            videoPlayer.seek(to: targetTime)
            videoPlayer.pause()
            // audioplayer = nil
            playerLayer.removeFromSuperlayer()
            playerLayer=AVPlayerLayer(player: videoPlayer)
            playerLayer.frame = CGRect(x:0 , y: 75 , width: videoView.frame.size.width , height:  UIScreen.main.bounds.height-170)
            playerLayer.backgroundColor = UIColor.black.cgColor
            playerLayer.videoGravity = AVLayerVideoGravityResize
            videoView.layer.addSublayer(playerLayer)
            let url = NSURL(string: videoString)
            let playerItem1 = AVPlayerItem(url: url! as URL)
            videoPlayer.replaceCurrentItem(with: playerItem1)

            videoPlayer.play()

            AppDelegate.shared().showLoading()
            // Setting slider max value
            let duration : CMTime = videoPlayer.currentItem!.asset.duration
            let seconds : Float64 = CMTimeGetSeconds(duration)
            videoSlider.maximumValue = Float(seconds)
            videoPlayButton.setImage(UIImage(named: "Pause"), for: .normal)
            videoPlaying = true
            //Adding Default Periodic Observer On Player
            videoPlayer.addPeriodicTimeObserver(forInterval: CMTimeMakeWithSeconds(1, 1), queue: DispatchQueue.main) { (CMTime) -> Void in


                if videoPlayer.currentItem?.status == .readyToPlay {
                    AppDelegate.shared().removeLoading()
                    self.videoSlider.value = Float(CMTimeGetSeconds(videoPlayer.currentTime()))
                    let currentTime : Int = Int(CMTimeGetSeconds(videoPlayer.currentTime()))
                    let minutes = currentTime/60
                    let seconds = currentTime - minutes * 60
                    self.durationLabel.text = NSString(format: "%02d:%02d", minutes,seconds) as String

                }
            }

        }
        else{

            videoView.isHidden = true
            let url = NSURL(string: videoString)
            let playerItem = AVPlayerItem(url: url! as URL)
            videoPlayer=AVPlayer(playerItem: playerItem)
            playerLayer=AVPlayerLayer(player: videoPlayer)
            playerLayer.frame = CGRect(x:0 , y: 75 , width: videoView.frame.size.width , height:  UIScreen.main.bounds.height-170)
            playerLayer.backgroundColor = UIColor.black.cgColor
            playerLayer.videoGravity = AVLayerVideoGravityResize
            videoView.layer.addSublayer(playerLayer)

        }
我很困惑,当我每次来到玩家屏幕时,我是否必须删除玩家层?帮助我
提前感谢

你能告诉我你在if部分和else部分到底在做什么吗???在viewDidLoad中,我正在检查视频播放器是否正在播放视频,在if条件下,如果视频正在播放,那么我将其搜索时间设为零并暂停视频,再次添加了playerlayer,若视频并没有在后台播放,那个么它就进入了其他部分,但在这里我检查了videoplayer,并在if和else部分添加了两层。视频第一次播放效果很好,但当我尝试播放第二个视频时,其显示层不可见,我使用了videoPlayer.replaceCurrentItem(使用:playerItem1)但是我缺少的地方是,如果一个视频已经在播放,我是否每次播放新视频时都必须删除播放器层?您正在播放相同的视频两次或不同???@NikunjDamani我只使用一个在AppDelegate类中声明的播放器,我的要求是,首先我播放了一段视频,然后回到上一页,然后选择相同的视频在这里播放。视频不应该从一开始就开始播放,而应该从当前位置播放。通过使用上述代码,我可以从当前位置播放视频,但视频内容第二次看不见,我可以听到声音,帮我解释为什么视频内容第二次不可见。你能告诉我你在if部分和else部分到底在做什么吗???在viewDidLoad中,我正在检查视频播放器是否正在播放视频,在if条件下,如果视频正在播放,则我将其搜索时间设置为零并暂停视频,然后再次添加playerlayer,如果视频未在后台播放,则其进入else部分,但这里我检查videoplayer,并在if和else部分中添加两次层。视频第一次播放效果很好,但当我尝试播放第二个视频时,其显示层不可见,我使用了videoPlayer.replaceCurrentItem(使用:playerItem1)但是我缺少的地方是,如果一个视频已经在播放,我是否每次播放新视频时都必须删除播放器层?您正在播放相同的视频两次或不同???@NikunjDamani我只使用一个在AppDelegate类中声明的播放器,我的要求是,首先我播放了一段视频,然后回到上一页,然后选择相同的视频在这里播放。视频不应该从一开始就开始播放,而应该从当前位置播放。通过使用上述代码,我可以从当前位置播放视频,但视频内容第二次不可见。我可以听到声音,请帮助我为什么视频内容第二次不可见。