使用GPUImage将图像添加到视频

and*_*lin 1 objective-c ios gpuimage

我正在尝试使用GPUImage库为视频的每个帧添加图像,但无法使其工作.出于某种原因,处理后的视频仅包括原始视频,没有图像叠加.我究竟做错了什么?

GPUImagePicture *overlay = [[GPUImagePicture alloc] initWithImage:[UIImage imageNamed:@"overlayimage"] smoothlyScaleOutput:YES];
[overlay processImage];

GPUImageMovie *movie = [[GPUImageMovie alloc] initWithURL:[THE URL TO THE VIDEO ASSET]];
movie.delegate = self;
movie.runBenchmark = YES;
movie.playAtActualSpeed = YES;

self.movieView = [[GPUImageView alloc] initWithFrame:self.bounds];
self.movieView.fillMode = kGPUImageFillModePreserveAspectRatio;
[self addSubview:self.movieView];

GPUImageAlphaBlendFilter *filter = [[GPUImageAlphaBlendFilter alloc] init];
[movie addTarget:filter atTextureLocation:0];
[overlay addTarget:filter atTextureLocation:1];
[filter prepareForImageCapture];

[filter addTarget:self.movieView];

[movie startProcessing];
Run Code Online (Sandbox Code Playgroud)

and*_*lin 7

这是解决方案,如果有人遇到同样的问题:你必须保留GPUImagePicture,GPUImageMovie和GPUImageView对象,例如将它们存储在属性中.否则,它们将在方法结束时或在runloop下在ARC下释放.

  • 我在同一天遇到了同样令人沮丧的30分钟.在方法的中间创建了一个过滤器,我将其输入到之前正在运行的混合中,忘记确保我的新过滤器的范围超出了方法.我感觉到你的痛苦! (2认同)