我正在iOS的 WKWebView 上显示视频,当它开始播放时,它将进入全屏模式。我需要能够在特定时刻获取视频播放帧的图像(通过websocket从外部触发)。我尝试遍历对象层次结构,能够访问 AVPlayerViewController 对象,但是它的播放器属性为 nil 。我还列出了在全屏视频播放时触发的所有通知,但没有一个给我提供 AVPlayer 或 AVPlayerItem 的方法。似乎可以通过 UIWebView 来实现,但不能通过 WKWebView 来实现。
在全屏播放视频时从外部触发的代码:
func getFullscreenVideoSnapshot() -> UIImage? {
if let rootController = UIApplication.shared.keyWindow?.rootViewController {
if let avPlayerViewController = findAVPlayerViewController(controller: rootController) {
print(avPlayerViewController.player!) // nil
// Code to get the SnapShot and return UIImage
}
}
}
func findAVPlayerViewController(controller: UIViewController) -> AVPlayerViewController? {
if controller is AVPlayerViewController {
return controller as? AVPlayerViewController
} else {
for subcontroller in controller.children {
if let result = findAVPlayerViewController(controller: subcontroller) {
return result
}
}
}
return nil
}