繁体   English   中英

GPUImage混合图像和视频会崩溃,从而释放了帧缓冲区

[英]GPUImage mixing image and video getting crash overreleasing a frame buffer

我正在尝试将视频与视频,视频与图像或图像与图像混搭。 如果我正在处理所有视频或所有图像,我的代码可以正常工作,但是当我尝试将图像与视频混合时,断言会崩溃:

Tried to overrelease a framebuffer, did you forget to call -useNextFrameForImageCapture before using -imageFromCurrentFramebuffer?

我曾尝试在整个代码的各个点添加[<some_filter> useNextFrameForImageCapture] ,但是我不知道需要在哪里添加它,或者这甚至是我的问题。

我的连锁店是:

GPUImagePicture -> any filter     --\ 
                                      > GPUImageColorDodgeBlendFilter
GPUImageVideoCamera -> any filter --/

我尝试简化过滤器链进行调试,如果我取消了任何中间过滤器,则它适用于图像/视频的所有组合。 但是,只要在混合之前添加任何一个过滤器,它就会崩溃。

我遇到了同样的问题,但是想出了一种解决方法,也就是“黑客”。 HTH!

    // next two lines address a bug in the GPUImage reference counting ...
    GPUImageFramebuffer* fb = self.filter.framebufferForOutput;
    [fb disableReferenceCounting];
    [self.filter useNextFrameForImageCapture];
    // next line was crashing with reference counting ...
    UIImage *retImage = [self.filter imageFromCurrentFramebuffer];

事实证明,这是GPUImage的一个公开错误 将视频/摄像机源与GPUImagePicture混合时。

我通过添加以下方法来解决此问题:

GPUImageNormalBlendFilter *blendFilter = [GPUImageNormalBlendFilter new];
[videoCameras[0] addTarget:blendFilter];
[source addTarget:blendFilter];

作为图片链中的第一个过滤器。 该视频实际上并未显示,并且可以防止崩溃。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM