我正在尝试使用透明度关键字(
根据文档(内容很少),这个操作应该会把视频中所有的绿色替换掉。但实际输出的结果是这样的:
。这告诉我视频正在播放(因此正在传输到应用程序),但似乎没有进行任何色度键控。这是为什么呢?我需要手动设置平滑值和阈值吗?不应该,因为源只包含两种颜色(
我已经在设备上测试过了,但没有成功。我试图使用的几乎所有其他过滤器都有效,比如
如果有人能帮忙解决这个问题,我将不胜感激,因为现在我对于视频透明度的处理已经尽力而为了。
RGB: 0x00FF00
,或者深绿色)在我的应用程序中展示一个带有透明度的视频文件,使用@BradLarson的很棒的GPUImage工具包。但是,我在使用GPUImageChromaKeyFilter
过滤器时遇到了一些困难,而且我不太明白为什么会这样。
我的源视频文件可以在我的Dropbox这里获得(12千字节,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];
根据文档(内容很少),这个操作应该会把视频中所有的绿色替换掉。但实际输出的结果是这样的:
![Screenshot of video](https://istack.dev59.com/NBU1c.webp)
0x00FF00
和0x000000
)。我已经在设备上测试过了,但没有成功。我试图使用的几乎所有其他过滤器都有效,比如
GPUImageRGBFilter
、 GPUImageSepiaFilter
等。难道说GPUImageChromaKeyFilter
有问题吗?如果有人能帮忙解决这个问题,我将不胜感激,因为现在我对于视频透明度的处理已经尽力而为了。