我一直在查看 GPUImage,但在显示和录制视频时无法弄清楚如何在视频顶部叠加一系列 png 或 jpg 图像。我想要在视频顶部叠加(或实际相乘)的序列中大约有 150 张照片。似乎我应该能够在两个图像叠加或乘法过滤器中每隔 1/24 秒将纹理从一帧换到下一帧。我不确定这是否会起作用?
在一个相关问题中,如果我根据两个输入混合过滤器制作自定义过滤器,在实例化过滤器并开始相机捕获后,是否有任何方法可以从 UIImage更改第二个纹理?
实际上,我确实设法让它工作,尽管不是以我最初打算的方式,但它也能正常工作。我必须做的是使用 GPUImageMovie 对象。
所以代码看起来像:
filter10 = [[GPUImageAddBlendFilter alloc] init];
[filter10 forceProcessingAtSize:_imageView7.sizeInPixels];
NSURL *url = [[NSBundle mainBundle] URLForResource:@"sample_film" withExtension:@"mov"];
_imageMovie = [[GPUImageMovie alloc] initWithURL:url];
_imageMovie.playAtActualSpeed = true;
_imageMovie.delegate = self;
[_imageMovie addTarget:filter10];
[_imageMovie startProcessing];
[filter10 addTarget:_imageView7];
[_videoCamera startCameraCapture];
多亏了 Brad Larson 的 GPUImage,我终于能够制作出我想要制作的具有足够性能的视频应用程序,而不必依赖 CIFilter,它没有我需要的一切。我需要为一件事编写一些自定义过滤器。