Воспроизвести видео с YouTube на ARImageAnchor в Swift - PullRequest
3 голосов
/ 08 апреля 2020

Я хочу воспроизвести видео на 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")])

Я пробую это, но на изображении отображается черный экран, но воспроизводится звук

1 Ответ

0 голосов
/ 14 апреля 2020

это может быть не совсем решение вашей проблемы, но я надеюсь, что это может помочь вам в некоторых отношениях

Итак, что вы можете сделать в дополнение к Обнаружению изображения, это отобразить 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)
        }
    }

Для справки вы можете проверить один из моих проектов , чтобы увидеть, как эта функция работает в проекте

...