Ios 对电影文件使用GPUImageLookupFilter会产生黑屏

Ios 对电影文件使用GPUImageLookupFilter会产生黑屏,ios,gpuimage,Ios,Gpuimage,我正在将我的代码从一个静态图像应用程序转移到一个生成电影文件的应用程序。但是,以下代码存在一个问题,即最终输出是使用GPUImageLookupFilter的黑色电影屏幕。有人能发现我做错了什么或我错过了什么吗 Header File Sample GPUImagePicture *lookupImageSource; GPUImageOutput<GPUImageInput> *filter; GPUImageMovie *movieFile; GPUImageMovieWrite

我正在将我的代码从一个静态图像应用程序转移到一个生成电影文件的应用程序。但是,以下代码存在一个问题,即最终输出是使用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];

这是一个启用ARC的项目吗?如果是这样的话,您就不会在设置了上述方法的方法之后保留对lookupImageSource GPUImagePicture实例的强引用。一旦退出该方法,提供查找的GPUImagePicture将被取消分配,从而丢失查找纹理


尝试将lookupImageSource设置为类的强持有实例变量,以便它在上述设置代码之外保持不变。

嗨,Brad,这是一个启用ARC的项目,我尝试将代码移到方法之外(请参见上面的更新代码),但不幸的是,仍然没有成功。如果我将过滤器更改为一个简单的渐晕图,它将毫无问题地运行。播放机将运行每一帧而不会出现问题,但屏幕输出为黑色。@ORStudios-在上面的示例中,不需要将查找筛选器包装到筛选器组中。您是否尝试过直接在电影文件中使用查找过滤器,而不是在组中查找?您好,我已将其从过滤器组中取出并单独放置。它正在显示,但看起来很奇怪,我正在使用提供的查找png(512 x 512),它似乎以块格式显示图片。@ORStudios-我想我看到了部分错误。添加查找图像后,您正在将要处理的电影作为输入添加到过滤器中。查找筛选器希望实际查找图像是该筛选器的第二个输入,而不是第一个输入。您可以反转将这些输入添加到过滤器的顺序,也可以对查找图像源使用纹理位置为1的
-addTarget:atTextureLocation:
。看看Amatorka和其他基于查找的过滤器是如何做到这一点的,作为例子。太棒了!谢谢你的帮助,布拉德。我最后在代码中添加了-addTarget:attexturerelocation:,这样就解决了这个问题。再次感谢,非常好的框架。
self.lookupImageSource = [[GPUImagePicture alloc] initWithImage:[UIImage    imageNamed:@"ExtremeVintage1.png"]];
            [self.lookupImageSource processImage];

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

            [movieFile addTarget:filter];