在电影文件上使用GPUImageLookupFilter会产生黑屏

时间:2013-08-06 12:20:30

标签: ios gpuimage

我正在将代码从静态图像应用程序移动到生成电影文件的应用程序。但是,以下代码存在问题,其中最终输出是使用GPUImageLookupFilter过滤器的黑色电影屏幕。任何人都可以发现我做错了什么或我可能错过了什么。

Header File Sample
GPUImagePicture *lookupImageSource;
GPUImageOutput<GPUImageInput> *filter;
GPUImageMovie *movieFile;
GPUImageMovieWriter *movieWriter;
@property(nonatomic,strong) GPUImagePicture *lookupImageSource;



Main File
filter = [[GPUImageFilterGroup alloc] init];

            self.lookupImageSource = [[GPUImagePicture alloc] initWithImage:[UIImage imageNamed:@"ExtremeVintage1.png"]];

            GPUImageLookupFilter * filterLookup = [[GPUImageLookupFilter alloc] init];

            [self.lookupImageSource addTarget:filterLookup];

            [self.lookupImageSource processImage];

            [(GPUImageFilterGroup *)filter addFilter:filterLookup];



            [(GPUImageFilterGroup *)filter setInitialFilters:[NSArray arrayWithObject:filterLookup]];
            [(GPUImageFilterGroup *)filter setTerminalFilter:filterLookup];


            [movieFile addTarget:filter];

由于

****更新*****

新代码

self.lookupImageSource = [[GPUImagePicture alloc] initWithImage:[UIImage    imageNamed:@"ExtremeVintage1.png"]];
            [self.lookupImageSource processImage];

            filter = [[GPUImageLookupFilter alloc] init];
            [lookupImageSource addTarget:filter];

            [movieFile addTarget:filter];

enter image description here

1 个答案:

答案 0 :(得分:5)

这是一个启用ARC的项目吗?如果是这样,那么您不会继续使用您的lookupImageSource GPUImagePicture实例的强引用,而不是您设置上述方法的方法。一旦退出该方法,提供查找的GPUImagePicture将被释放,因此您将丢失查找纹理。

尝试将lookupImageSource设置为类的强保存实例变量,以使其超出上述设置代码。