我正在尝试RGB: 0x00FF00
使用@BradLarson 很棒的GPUImage工具包使用透明度键(或全绿色)在我的应用程序中显示具有透明度的视频文件。但是,我在使用GPUImageChromaKeyFilter
过滤器时遇到了一些困难,我不太明白为什么。
我的源视频文件在我的 Dropbox 中可用( 12 KB,3 秒长,全绿色背景,屏幕上只是一个正方形),
我使用了名为SimpleVideoFilter
.
这是我尝试使用的代码(我只是替换了-viewDidLoad
):
NSURL *sampleURL = [[NSBundle mainBundle] URLForResource:@"sample" withExtension:@"m4v"];
movieFile = [[GPUImageMovie alloc] initWithURL:sampleURL];
filter = [[GPUImageChromaKeyFilter alloc] init];
[filter setColorToReplaceRed:0 green:1 blue:0];
[filter setEnabled:YES];
[movieFile addTarget:filter];
GPUImageView *filterView = (GPUImageView *)self.view;
[filter addTarget:filterView];
[movieFile startProcessing];
根据文档(这是稀疏的),这应该具有替换视频中所有绿色的效果。相反,我将其作为输出:
这告诉我视频正在播放(因此它正在复制到应用程序),但它似乎没有进行任何色度键控。为什么会这样?我是否需要手动设置平滑值和阈值?我不应该,因为源只包含两种颜色(0x00FF00
和0x000000
)。
我也在设备上对此进行了测试,但无济于事。我尝试使用的几乎所有其他过滤器都可以工作,例如GPUImageRGBFilter
,GPUImageSepiaFilter
等。会GPUImageChromaKeyFilter
被破坏吗?
对此的任何帮助将不胜感激,因为此时我正在刮擦桶的底部以获得视频的透明度。