我尝试使用 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];
最佳答案
如果有人遇到同样的问题,这里是解决方案:您必须保留 GPUImagePicture、GPUImageMovie 和 GPUImageView 对象,例如将它们存储在属性中。否则它们将在方法或运行循环结束时在 ARC 下释放。
关于ios - 使用 GPUImage 将图像添加到视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19397259/