基本上,我想从iPhone相机中抓取帧,将它们输入到自定义过滤器中,然后将来自该自定义过滤器的结果放入我自己的CPU内存中,以进行进一步处理。问题是相机每秒发送30帧到滤镜,我怎么知道该滤镜何时完成拍摄?换句话说,当滤镜完成处理相机的每一帧时,是否存在回调函数?代码如下:

    videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack];
    videoCamera.outputImageOrientation = UIInterfaceOrientationPortrait;
    MyOwnGPUFilter *mof=[[MyOwnGPUFilter alloc] init];
    [videoCamera addTarget:mof];
    [videoCamera startCameraCapture];

最佳答案

对于这样的事情,我建议使用GPUImageRawDataOutput类并设置其newFrameAvailableBlock。如果将GPUImageRawDataOutput设置为过滤器的目标,则该块将在过滤器完成处理后立即触发。

GPUImageRawDataOutput使您可以直接访问原始颜色数据,并使用最有效的方式将其拉低。这样可以轻松地将这些颜色字节传递到您的CPU端处理中。

10-08 17:59