Хроматическая фильтрация видео с использованием GPUImage?
Я пытаюсь отобразить видеофайл с прозрачностью внутри моего приложения с помощью ключа прозрачности (RGB: 0x00FF00
или полностью зеленым), используя @ BradLarson's awesomeGPUImage Инструментарий. Тем не менее, я испытываю некоторые трудности с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];
Согласно документации (которая является редкой), этоshould иметь эффект замены всего зеленого в видео. Вместо этого я получаю это в качестве вывода:
Это говорит мне о том, что видео воспроизводится (и, следовательно, оно копируется в приложение), но, похоже, оно не выполняет какую-либо хроматическую настройку. С чего бы это? Нужно ли вручную устанавливать значения сглаживания & amp; пороги? Я не должен, потому что источник содержит только два цвета (0x00FF00
а также0x000000
).
Я проверил это на устройстве, но безрезультатно. Почти все другие фильтры, которые я пытаюсь использовать, такие какGPUImageRGBFilter
, GPUImageSepiaFilter
и т. д. МоглиGPUImageChromaKeyFilter
просто сломаться?
Буду признателен за любую помощь в этом, поскольку в этот момент я очищаю нижнюю часть ствола для прозрачности видео.