3

有谁知道如何有效地做到这一点?我正在使用 EncodeToPNG() 函数,但性能确实很慢。

我正在尝试使用 WebCamTexture 捕获 Ipad 相机图像并将其发送到 Objective C 端进行一些处理。我注意到可以发送纹理的本机地址,但我应该如何在 ObjC 端处理它?有人对此有任何提示吗?

谢谢!

4

1 回答 1

0

正如您所说的 EncodeToPNG 的性能太慢,您需要做的是在相机源从 iOS(objc)发送到 Unity 的 WebCamTexture 之前挂钩代码。

我们使用了一个类似的技术和一个名为 CameraCaptureKit ( https://www.assetstore.unity3d.com/en/#!/content/56673 ) 的插件来冻结发送到 Unity 的图像,同时等待 Flash 和防抖被打开上。

在 Unity 生成的 xcode 项目中,您可以打开 CameraCapture.mm 并找到该函数。

- (void)captureOutput:(AVCaptureOutput*)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection*)connection

然后,您可以通过修改此代码来修改发送到 Unity 的 WebCamTexture 的图像。UnityDidCaptureVideoFrame 是您要插入的代码。

intptr_t tex = (intptr_t)CMVideoSampling_SampleBuffer(&self->_cmVideoSampling, sampleBuffer, &self->_width, &self->_height);
UnityDidCaptureVideoFrame(tex, self->_userData);

干杯

于 2016-04-25T23:18:08.010 回答