经过一些特定的计数后,AVPlayer不会加载视频

时间:2018-09-10 07:21:33

标签: swift uitableview avplayer avplayerviewcontroller avplayerlayer

我正在使用AVPlayer从表视图单元内的本地存储加载视频以多次显示视频。

它可以正常工作16次,但是当我加载单元格17次时,它没有加载并显示错误

enter image description here

我尝试使用其他视频大小,但仍无法解决!

此处代码

var player : AVPlayer? = nil
var playerLayer : AVPlayerLayer? = nil
var asset : AVAsset? = nil
var playerItem: AVPlayerItem? = nil

            var videoURLWithPath = str

            let videoURL = NSURL(string: videoURLWithPath)

            self.asset = AVAsset(url: videoURL! as URL)

            self.playerItem = AVPlayerItem(asset: self.asset!)

            NotificationCenter.default.addObserver(self, selector: #selector(self.playerDidFinishPlaying(sender:)), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: self.playerItem)

            NotificationCenter.default.addObserver(self, selector: #selector(self.playerDidNotLoaded(sender:)), name: NSNotification.Name.AVPlayerItemFailedToPlayToEndTime, object: self.playerItem)

            NotificationCenter.default.addObserver(self, selector: #selector(self.playerDidNotLoaded(sender:)), name: Notification.Name.AVPlayerItemNewErrorLogEntry, object: self.playerItem)
            NotificationCenter.default.addObserver(self, selector: #selector(self.playerDidNotLoaded(sender:)), name: Notification.Name.AVPlayerItemPlaybackStalled, object: self.playerItem)

            self.player = AVPlayer(playerItem: self.playerItem)

            // When you need to update the UI, switch back out to the main thread
            DispatchQueue.main.async {
                // Main thread
                // Do your UI updates here

                let playerViewController = AVPlayerViewController()

                playerViewController.videoGravity = AVLayerVideoGravityResizeAspectFill
                playerViewController.player = self.player
                //playerViewController.showsPlaybackControls = false
                view.addChildViewController(playerViewController)
                view.didMove(toParentViewController: playerViewController)
                playerViewController.view.frame.size.width = self.videoView.frame.width
                playerViewController.view.frame.size.height = self.videoView.frame.height
                self.videoView.addSubview(playerViewController.view)

                if self.player?.rate == nil{

                    view.showAlert(withMessage: "Vidoe didn't found")

                    self.continueBtn.isHidden = false

                }

                self.player!.pause()

            }

0 个答案:

没有答案