有谁知道如何有效地做到这一点?我正在使用EncodeToPNG()函数,但性能非常慢。
我正在尝试使用WebCamTexture捕获Ipad相机图像并将其发送到Objective C端进行一些处理。我注意到可以发送纹理的原生地址但是我应该如何在ObjC端处理呢?有没有人对此有任何提示?
谢谢!
答案 0 :(得分: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);
干杯