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