我的问题很简单:我必须处理视频的每一帧。该过程计算一个区域以在原始帧上进行裁剪。为了获得更好的性能,我必须缩小原始帧。如今,这要归功于一个专门的图书馆。但是,它很慢。由于 OpenGL ES 2.0 glsl,我们想知道是否有可能缩小此帧。
大卫
我的问题很简单:我必须处理视频的每一帧。该过程计算一个区域以在原始帧上进行裁剪。为了获得更好的性能,我必须缩小原始帧。如今,这要归功于一个专门的图书馆。但是,它很慢。由于 OpenGL ES 2.0 glsl,我们想知道是否有可能缩小此帧。
大卫
如果您使用 AV Foundation 从磁盘加载视频或从相机中提取视频,您可以使用我的开源GPUImage框架为您处理底层的 OpenGL ES 处理。
具体来说,您可以使用 GPUImageCropFilter 在 CGRect 中使用归一化的 0.0-1.0 坐标裁剪输入视频的选定区域。FilterShowcase 示例展示了如何在实践中对来自摄像机的实时视频进行操作。有了这个,如果你不想的话,你不需要接触任何手动的 OpenGL ES API 调用。
最后,我将使用帧缓冲区对象来渲染我的纹理。我将视口设置为所需的大小并像往常一样渲染我的纹理。为了取回下采样的图像,我将使用 glGetReadPixels。
大卫