首页 > 解决方案 > 不再检测到图像时,ARKit 会重置视频播放器

问题描述

嘿,我最近开始为我想要制作的 AR 书编写代码。通过观看一些教程,我可以在检测到正确图像时播放视频。我的问题是视频只播放一次。我想找到一个解决方案,当不再检测到图像时视频停止播放并在再次检测到图像时重新启动。

我尝试用谷歌搜索问题,但无法集成这样的解决方案: 停止 AVPlayer 并再次重新启动 MP3 文件

我对编码真的很陌生,所以我真的不知道这是否是一个好的解决方案,但这就是我的代码现在的样子。

func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {

    let node = SCNNode()

    

    if let imageAnchor = anchor as? ARImageAnchor {
        

            
        if imageAnchor.referenceImage.name == "gasstation"{


        let size = imageAnchor.referenceImage.physicalSize


        let videoUrl = Bundle.main.url(forResource: "video", withExtension: "mp4")!
        let videoPlayer = AVPlayer(url: videoUrl)
        videoPlayer.play()
        let plane = SCNPlane(width: size.width, height: size.height)
        plane.firstMaterial?.diffuse.contents = videoPlayer
        let planeNode = SCNNode(geometry: plane)
        planeNode.eulerAngles.x = -.pi / 2
        node.addChildNode(planeNode)
            
        return node
        }
        if imageAnchor.referenceImage.name == "teaser"{

        let size = imageAnchor.referenceImage.physicalSize


        let videoUrl = Bundle.main.url(forResource: "teaser_def", withExtension: "mp4")!
        let videoPlayer = AVPlayer(url: videoUrl)
        videoPlayer.play()
        let plane = SCNPlane(width: size.width, height: size.height)
        plane.firstMaterial?.diffuse.contents = videoPlayer
        let planeNode = SCNNode(geometry: plane)
        planeNode.eulerAngles.x = -.pi / 2
        node.addChildNode(planeNode)
    
        return node
        }
        
    
    }

标签: swiftxcodeavplayerarkit

解决方案


推荐阅读