ios - 在视频上添加 GPUImagePicture

标签 ios objective-c gpuimage

我正在尝试在视频中添加 GPUImagePictureGPUImageUIElementGPUImageUIElement 工作正常,但我对 GPUImagePicture 有问题,因为我只在第一帧看到它,然后它就消失了。

这是我的代码:

filter = [[GPUImageBrightnessFilter alloc] init];
[(GPUImageBrightnessFilter *)filter setBrightness:0];

GPUImageAlphaBlendFilter *blendFilter = [[GPUImageAlphaBlendFilter alloc] init];
blendFilter.mix = 1.0;

        GPUImagePicture *overlay = [[GPUImagePicture alloc] initWithImage:[UIImage imageNamed:@"Logo.png"] smoothlyScaleOutput:YES];
        GPUImageTransformFilter *transformFilter = [GPUImageTransformFilter new];
        [transformFilter forceProcessingAtSize:CGSizeMake(73, 83)];
        [transformFilter setAffineTransform:CGAffineTransformMakeScale(0.7, 0.7)];
        [overlay addTarget:transformFilter];
        [overlay processImage];

UIView *subview1 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 400)];
        UILabel *temperaturaText = [[UILabel alloc]initWithFrame:CGRectMake(77, 100, 105, 60)];
        temperaturaText.text = @"test";
        [subview1 addSubview:temperaturaText];
 uiElementInput = [[GPUImageUIElement alloc] initWithView:subview1];

[filter addTarget:blendFilter];
[uiElementInput addTarget:blendFilter];
[blendFilter addTarget:filterView];
[overlay addTarget:filterView];

__unsafe_unretained GPUImageUIElement *weakUIElementInput = uiElementInput;

[filter setFrameProcessingCompletionBlock:^(GPUImageOutput *filter, CMTime frameTime) {
     [weakUIElementInput update];
 }];

[blendFilter addTarget:movieWriter];

最佳答案

您的问题是您将 overlay 的输入图片定义为设置方法中的局部变量。您没有持有对它的强引用,因此它会在您完成此方法后立即被释放,这也会从您的处理管道中删除图像纹理及其输出。

如果你想保留一个输入图像,你需要使 overlay 成为你类的一个实例变量,就像你在上面为你的相机或电影输入所做的那样。然后它将持续被框架用作输入。

关于ios - 在视频上添加 GPUImagePicture,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23269467/

相关文章:

android - 仅向新用户显示屏幕 react 导航 v3

objective-c - 从 nsarray 中取出对象

iphone - ManagedObjectModel 初始化为 nil

ios - 使用 GPUImagePerlinNoiseFilter 生成图像

ios - 如何在 iOS 中展开过渡后显示警报?

ios - Storyboard静态 TableView 太多行

ios - 在 iCarousel 上重用标识符

ios - iOS:NSNotification无法识别的选择器错误

ios - SIGSEGV/SEGV_ACCERR 导致 GPUImage 框架 iOS 崩溃

android - 如何添加像 Retrica 这样的相机预览实时滤镜?