如何在 Swift 中使用 Arkit 在图像上播放托管视频?
How to play hosted video on an image with Arkit in Swift?
当视频存储在本地时,我可以毫无问题地播放视频,但现在我想播放托管在我的 google 驱动器上的视频。
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let configuration = ARImageTrackingConfiguration()
if let trackedImages = ARReferenceImage.referenceImages(inGroupNamed: "TestImages", bundle: Bundle.main){
configuration.trackingImages = trackedImages
configuration.maximumNumberOfTrackedImages = 1
}
// Run the view's session
ARView.session.run(configuration)
}
这是我将视频渲染到图像上的函数:
func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
let node = SCNNode()
if let imageAnchor = anchor as? ARImageAnchor{
let videoNode = SKVideoNode(fileNamed: "Test.mp4")
videoNode.play()
let videoScene = SKScene(size: CGSize(width: 1080, height:720 ))
videoScene.addChild(videoNode)
let plane = SCNPlane(width: imageAnchor.referenceImage.physicalSize.width, height: imageAnchor.referenceImage.physicalSize.height)
videoNode.position = CGPoint(x: videoScene.size.width/2, y: videoScene.size.height/2)
videoNode.yScale = -1.0
plane.firstMaterial?.diffuse.contents = videoScene
let planeNode = SCNNode(geometry: plane)
planeNode.eulerAngles.x = -.pi/2
node.addChildNode(planeNode)
}
return node
}
我是 ARKIT 的新手,所以我只学习基本功能并喜欢使用它们。
您的代码看起来不错。您唯一需要更改的是您定义的行 videoNode
示例:
let videoNode = SKVideoNode(url: URL(fileURLWithPath: "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4"))
希望对您有所帮助!
当视频存储在本地时,我可以毫无问题地播放视频,但现在我想播放托管在我的 google 驱动器上的视频。
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let configuration = ARImageTrackingConfiguration()
if let trackedImages = ARReferenceImage.referenceImages(inGroupNamed: "TestImages", bundle: Bundle.main){
configuration.trackingImages = trackedImages
configuration.maximumNumberOfTrackedImages = 1
}
// Run the view's session
ARView.session.run(configuration)
}
这是我将视频渲染到图像上的函数:
func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
let node = SCNNode()
if let imageAnchor = anchor as? ARImageAnchor{
let videoNode = SKVideoNode(fileNamed: "Test.mp4")
videoNode.play()
let videoScene = SKScene(size: CGSize(width: 1080, height:720 ))
videoScene.addChild(videoNode)
let plane = SCNPlane(width: imageAnchor.referenceImage.physicalSize.width, height: imageAnchor.referenceImage.physicalSize.height)
videoNode.position = CGPoint(x: videoScene.size.width/2, y: videoScene.size.height/2)
videoNode.yScale = -1.0
plane.firstMaterial?.diffuse.contents = videoScene
let planeNode = SCNNode(geometry: plane)
planeNode.eulerAngles.x = -.pi/2
node.addChildNode(planeNode)
}
return node
}
我是 ARKIT 的新手,所以我只学习基本功能并喜欢使用它们。
您的代码看起来不错。您唯一需要更改的是您定义的行 videoNode
示例:
let videoNode = SKVideoNode(url: URL(fileURLWithPath: "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4"))
希望对您有所帮助!