【发布时间】:2012-09-17 15:48:39
【问题描述】:
我正在尝试使用@BradLarson 的超棒GPUImage 工具包使用透明度键(RGB: 0x00FF00,或全绿色)在我的应用程序中显示具有透明度的视频文件。但是,我在使用 GPUImageChromaKeyFilter 过滤器时遇到了一些问题,我不太明白为什么。
我的源视频文件在我的 Dropbox here 中可用(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 会被破坏吗?
对此的任何帮助将不胜感激,因为此时我正在刮擦桶的底部以获得视频的透明度。
【问题讨论】:
-
@BradLarson 我很想看到你对此的一些意见。
-
嗨,理查德,你解决了这个问题吗?你会发布代码吗?谢谢:D
-
不;没有解决;(我希望@BradLarson 可以进来回答自己,但可惜事实并非如此。
-
所以,我遇到了同样的问题,但无法让它工作。但是在给 Brad 发送电子邮件后,我发现一种解决方法实际上确实解决了问题,只要视图不透明即可。此博客文章中提供了示例应用程序的源代码:modejong.com/blog/post18_green_screen/index.html
标签: ios video transparency gpuimage