在iOS iPhone应用程序中以每秒60帧的速度对实时视频进行下采样

在iOS iPhone应用程序中以每秒60帧的速度对实时视频进行下采样,ios,real-time,avfoundation,video-processing,Ios,Real Time,Avfoundation,Video Processing,我试图在iOS设备上减少实时视频的采样(以每秒像素为例),但有一个条件:以60 fps的速度进行 分辨率可能会降低,视频屏幕的视图只能是一个小矩形(约200x200px)。然后应在屏幕上预览结果 我一直在使用优秀的2012 WWDC RosyWriter示例作为起点。 但是经过几个小时的搜索,我甚至找不到一个教程,也找不到一个github项目的人已经做了同样的工作,并且可以解释如何做到这一点。我在StackOverflow中一遍又一遍地筛选所有相关问题,但都没有成功。我正在寻找一个代码示例、一个

我试图在iOS设备上减少实时视频的采样(以每秒像素为例),但有一个条件:以60 fps的速度进行

分辨率可能会降低,视频屏幕的视图只能是一个小矩形(约200x200px)。然后应在屏幕上预览结果

我一直在使用优秀的2012 WWDC RosyWriter示例作为起点。 但是经过几个小时的搜索,我甚至找不到一个教程,也找不到一个github项目的人已经做了同样的工作,并且可以解释如何做到这一点。我在StackOverflow中一遍又一遍地筛选所有相关问题,但都没有成功。我正在寻找一个代码示例、一个好的答案或者一个关于这个主题的教程的快速参考

相关但尚未回答的问题:

请查看中的示例

然后用类似的方法消除乌贼墨过滤器,以获得预览:

videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack];
GPUImageView *filterView = (GPUImageView *)self.view;
[videoCamera addTarget:filterView];
[videoCamera startCameraCapture];
这是Brad在评论中建议的开始:

videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack];
GPUImageLanczosResamplingFilter* filter = [[GPUImageLanczosResamplingFilter alloc] init];
GPUImageView *filterView = (GPUImageView *)self.view;
[videoCamera addTarget:filter];
[filter forceProcessingAtSize:self.view.frame.size];
[filter addTarget:filterView];    
[videoCamera startCameraCapture];
过滤器的输出也将发送到GPUImageMovieWriter。SimpleVideoFilter示例介绍了它。

请查看中的示例

然后用类似的方法消除乌贼墨过滤器,以获得预览:

videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack];
GPUImageView *filterView = (GPUImageView *)self.view;
[videoCamera addTarget:filterView];
[videoCamera startCameraCapture];
这是Brad在评论中建议的开始:

videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack];
GPUImageLanczosResamplingFilter* filter = [[GPUImageLanczosResamplingFilter alloc] init];
GPUImageView *filterView = (GPUImageView *)self.view;
[videoCamera addTarget:filter];
[filter forceProcessingAtSize:self.view.frame.size];
[filter addTarget:filterView];    
[videoCamera startCameraCapture];

过滤器的输出也将发送到GPUImageMovieWriter。SimpleVideoFilter示例涵盖了这一点。

这不会进行任何实际的降采样,但是如果您使用带有
-forceProcessingAtSize:
的GPUIMageancZosSamplingFilter对目标图像大小进行降采样,您应该能够进行快速、高质量的降采样。我稍微扩展了答案,以包括降采样(sans video file writer)。感谢您的建议和框架。这不会进行任何实际的降采样,但是如果您使用带有
-forceProcessingAtSize:
的gpuimageranczosremplingfilter对目标图像大小进行降采样,您应该能够进行快速、高质量的降采样。我稍微扩展了答案以包括降采样(sans video file writer). 感谢您的建议和框架。