swift - 无法在 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
非常感谢您的帮助,因为我现在正试图解决这个问题。
解决方案
推荐阅读
- linux - /bin/sh:安装:未找到
- flutter - 有没有办法弹出几个页面并重新加载目标页面?
- android - 从 Glide 得到嘈杂的日志
- html - 我想用背景颜色将 3 个 div 并排放置
- c++ - Visual Studio 调试器在调试中无法正确显示 std::string
- coreos - 如何在 VirtualBox 上设置 CoreOS 集群?
- django - Django Rest 框架“CSRF 失败:CSRF 令牌丢失或不正确。” JSONWebTokenAuthentication 错误
- javascript - 如何在 JSDoc 中记录解构参数?
- sql - REFERENCES 两个不同表中的两个不同列
- mysql - node-mysql:多语句查询,ER_PARSE_ERROR