向上滑动(将应用程序置于后台)并且视频正在自定义 AVPLayer 中播放时,如何停止画中画?
How to stop going to picture in picture when swiped up(put the application in background) and video is playing in custom AVPLayer?
我正在开发支持画中画的视频播放器。
我在该播放器上播放广告和视频内容。当播放器播放广告时,我想限制从设备向上滑动(将应用程序置于后台)时自动画中画。广告完成后,我想让它在应用程序进入后台时以画中画的形式出现。
我在自定义播放器中使用 AVPlayer
,在画中画支持中使用 AVPictureInPictureController
。
我找到了一个与 AVPlayerViewController
相关的解决方案,其中 .allowsPictureInPicturePlayback
属性 允许禁用画中画。但是我没有找到 AVPlayer
或 AVPlayerLayer
的任何属性来限制画中画。
请分享处理此案例的可能解决方案。提前致谢。
AVPictureInPictureController
负责在您的应用程序进入后台时自动显示画中画,而带有 AVPlayerLayer 的 AVPlayer 没有任何设置来管理它。使画中画只有允许显示画中画时才能创建画中画,否则销毁。
例如,您可以在视图控制器中创建一个 属性 来打开和关闭画中画控制器:
var pipController: AVPictureInPictureController?
var allowsPictureInPicturePlayback: Bool = false {
didSet {
guard AVPictureInPictureController.isPictureInPictureSupported() else { return }
if allowsPictureInPicturePlayback {
pipController = AVPictureInPictureController(playerLayer: playerLayer)
pipController?.delegate = self
}
else {
pipController = nil
}
}
}
我正在开发支持画中画的视频播放器。
我在该播放器上播放广告和视频内容。当播放器播放广告时,我想限制从设备向上滑动(将应用程序置于后台)时自动画中画。广告完成后,我想让它在应用程序进入后台时以画中画的形式出现。
我在自定义播放器中使用 AVPlayer
,在画中画支持中使用 AVPictureInPictureController
。
我找到了一个与 AVPlayerViewController
相关的解决方案,其中 .allowsPictureInPicturePlayback
属性 允许禁用画中画。但是我没有找到 AVPlayer
或 AVPlayerLayer
的任何属性来限制画中画。
请分享处理此案例的可能解决方案。提前致谢。
AVPictureInPictureController
负责在您的应用程序进入后台时自动显示画中画,而带有 AVPlayerLayer 的 AVPlayer 没有任何设置来管理它。使画中画只有允许显示画中画时才能创建画中画,否则销毁。
例如,您可以在视图控制器中创建一个 属性 来打开和关闭画中画控制器:
var pipController: AVPictureInPictureController?
var allowsPictureInPicturePlayback: Bool = false {
didSet {
guard AVPictureInPictureController.isPictureInPictureSupported() else { return }
if allowsPictureInPicturePlayback {
pipController = AVPictureInPictureController(playerLayer: playerLayer)
pipController?.delegate = self
}
else {
pipController = nil
}
}
}