首页 > 解决方案 > 无法在 ARKit 中查看 SKVideo

问题描述

目标:用户在 iPhone 上选择图像和视频。一旦 ARkit 检测到图像,它就会直接在图像锚上播放视频。

我得到的结果:正确检测到图像并且开始播放视频声音但我看不到视频

videoPath 的示例值 = file:///private/var/mobile/Containers/Data/PluginKitPlugin/89AA4E28-FD6D-46F1-9956-903C94DB445D/tmp/trim.DFE9146D-BBE3-45F9-A71F-2E10245AE5FE.MOV

如果我尝试从项目文件夹播放预加载的 .mp4 视频,相同的代码运行良好。

    func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
    
    let node = SCNNode()
    
    if let imageAnchor = anchor as? ARImageAnchor {
        
        if let imageName = imageAnchor.referenceImage.name {
            //get video path string from a dictionary based on image name
            if let videoPath = dictionary[imageName] {
                //assemble URL based on the path string
                if let videoURL = URL(string: videoPath) {
                    
                    let videoNode = SKVideoNode(url: videoURL)
                    videoNode.play()

                    let videoScene = SKScene(size: CGSize(width: 848, height: 480))

                    videoNode.position = CGPoint(x: videoScene.size.width / 2, y: videoScene.size.height / 2)
                    videoNode.yScale = -1.0
                    videoScene.addChild(videoNode)

                    let plane = SCNPlane()
                    plane.height = imageAnchor.referenceImage.physicalSize.height
                    plane.width = imageAnchor.referenceImage.physicalSize.width

                    let material = SCNMaterial()
                    material.diffuse.contents = videoScene
                    plane.materials = [material]

                    let planeNode = SCNNode(geometry: plane)
                    planeNode.eulerAngles.x = -.pi / 2

                    node.addChildNode(planeNode)
                }

            }

        }
        
    }

    return node

非常感谢您的帮助,因为我现在正试图解决这个问题。

标签: swiftscenekitarkit

解决方案


推荐阅读