【问题标题】:Dismissing AVPlayerViewController doesn't 'kill' the object - it's persisting关闭 AVPlayerViewController 不会“杀死”对象 - 它会持续存在
【发布时间】:2019-09-28 17:02:38
【问题描述】:

我正在播放我的 app bundle 中的视频。

他们正在正确播放。

但是,当我调用关闭 AVPlayerViewController 时,它明显地从视图层次结构中删除了,但是,如果我关闭 iOS 设备并再次打开它,在锁定屏幕上有一个媒体控件显示该视频和一个“播放”按钮。

如果你触摸播放,你只会得到音频而没有视频。

我的问题是我不明白为什么“解雇”在我完成后并没有完全“杀死”玩家。

这是演示代码:

let path = Bundle.main.path(forResource: filename, ofType: type)

let url = NSURL(fileURLWithPath: path!)

let player = AVPlayer(url: url as URL)

NotificationCenter.default.addObserver(self,
                                       selector: #selector(VideoLibraryViewController.didFinishPlaying(notification:)),
                                       name: NSNotification.Name.AVPlayerItemDidPlayToEndTime,
                                       object: player.currentItem)

self.playerController = AVPlayerViewController()

self.playerController?.player = player

self.playerController?.allowsPictureInPicturePlayback = true

self.playerController?.showsPlaybackControls = YES

self.playerController?.delegate = self

self.playerController?.player?.play()

self.present(self.playerController!, animated: true, completion : nil)

这是解雇代码:


// Delegate can implement this method to be notified when Picture in Picture will start.
func playerViewController(_ playerViewController: AVPlayerViewController, willEndFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator)
{
    self.playerController?.dismiss(animated: NO, completion: nil )
}

以下是锁定屏幕/控制中心显示的系统级媒体播放器中剩余的内容:

【问题讨论】:

    标签: ios swift avplayerviewcontroller avkit


    【解决方案1】:

    仅限 iOS 13 SDK:这是解决方案,但答案是尽管解除了 AVPlayerViewController,但它所知道的 AVPlayer 对象是持久的,需要设置为 nil。

    private func killVideoPlayer()
    { 
        self.playerController?.player?.pause()
        self.playerController?.player  = nil
    
        self.playerController?.dismiss(animated: YES, completion: { self.playerController = nil })
    }
    

    以前的 SDK,这仍然不起作用。

    也没有将 AVAudioSession.active 设置为 false... ?!?!仍然需要 iOS 13 之前的 SDK 解决方案。

    【讨论】:

      猜你喜欢
      • 2021-02-14
      • 1970-01-01
      • 2019-02-08
      • 2013-07-03
      • 1970-01-01
      • 2010-09-10
      • 2011-07-12
      • 2011-07-27
      • 2015-08-09
      相关资源
      最近更新 更多