如何从WKWebView获取AVPlayer或AVPlayerItem实例,该WKWebView从外部触发的功能全屏播放视频

时间:2019-12-04 21:37:35

标签: ios swift avplayer wkwebview

我正在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
}

0 个答案:

没有答案