我想在我的图像跟踪模块上播放youtube视频例如追踪图片时,然后在上面播放youtube视频。
有人可以帮我吗?
private func makeVideo(with url: URL, size: CGSize) -> SCNNode? {
DispatchQueue.main.async {
self.player.frame = CGRect(x: 0, y: 0, width: 650, height: 400)
self.player.autoplay = true
self.player.loadPlayer()
}
// 4
let avMaterial = SCNMaterial()
avMaterial.diffuse.contents = player
// 5
let videoPlane = SCNPlane(width: size.width, height: size.height)
videoPlane.materials = [avMaterial]
// 6
let videoNode = SCNNode(geometry: videoPlane)
videoNode.eulerAngles.x = -.pi / 2
return videoNode
}
import YoutubeKit
let player = YTSwiftyPlayer(playerVars: [.videoID("GJQsT-h0FTU")])
我尝试过,但图像上显示黑屏,但正在播放音频
这可能不能完全解决您的问题,但我希望它可以在某些方面为您提供帮助
因此,除了图像检测之外,您还可以显示UIWebView。>
'UIWebView'在iOS 12.0中已被弃用:不再受支持;请采用WKWebView。
尽管Xcode会通过类似上面的消息警告您,但是WKWebView不会显示任何内容,因此您必须坚持使用WebView,直到他们解决问题为止
因此,假设您已经确定了图像检测部分,并且能够在检测到的图像上定位并放置节点,则可以实现以下功能:
func displayWebSite(on rootNode: SCNNode, horizontalOffset: CGFloat) { DispatchQueue.main.async { // Open YouTube let request = URLRequest(url: URL(string: "https://youtu.be/7ehEPsrw1X8")!) // Define the size let webView = UIWebView(frame: CGRect(x: 0, y: 0, width: 650, height: 900)) webView.loadRequest(request) // Set size let webViewPlane = SCNPlane(width: horizontalOffset, height: horizontalOffset * 1.45) webViewPlane.cornerRadius = 0.025 // Define geometry let webViewNode = SCNNode(geometry: webViewPlane) // Set the WebView as a material to the plane webViewNode.geometry?.firstMaterial?.diffuse.contents = webView webViewNode.opacity = 0 // Put a little in front to avoid merger with detected image webViewNode.position.z += 0.04 // Add the node rootNode.addChildNode(webViewNode) } }
作为参考,您可以检查我的projects之一以查看该功能在项目中的工作方式