具有SceneKit和AVDeviceCapture背景的AVCaptureVideoDataOutputSampleBufferDelegate

时间:2018-02-01 23:19:02

标签: ios swift scenekit avcapturedevice

我正在尝试使用相机视频输入作为SceneKit的背景来获取CVPixelBuffer。请注意我不能将ARKit用于我的项目,因为我需要前置+后置摄像头,没有世界跟踪开销。即使尝试最基本的例子:

let captureDevice = AVCaptureDevice.default(.builtInWideAngleCamera, for: .video, position: .back)
self.scnScene.background.contents = captureDevice

导致iOS 11.2中出现以下错误:

  

[SceneKit]错误:无法获取像素缓冲区(CVPixelBufferRef)

每当弹出此错误时,AVCaptureVideoDataOutputSampleBufferDelegate就会停止被调用。

1 个答案:

答案 0 :(得分:0)

由于我无法同时使用AVCaptureDevice作为SceneKit的背景并抓住其CVPixelBuffer,我的解决方案是将示例缓冲区渲染为MTLTexture,然后将其应用为SceneKit的背景。在此处作为起点:

https://developer.apple.com/documentation/arkit/displaying_an_ar_experience_with_metal