Хроматическая фильтрация видео с использованием 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 иметь эффект замены всего зеленого в видео. Вместо этого я получаю это в качестве вывода:

Screenshot of video

Это говорит мне о том, что видео воспроизводится (и, следовательно, оно копируется в приложение), но, похоже, оно не выполняет какую-либо хроматическую настройку. С чего бы это? Нужно ли вручную устанавливать значения сглаживания & amp; пороги? Я не должен, потому что источник содержит только два цвета (0x00FF00 а также0x000000).

Я проверил это на устройстве, но безрезультатно. Почти все другие фильтры, которые я пытаюсь использовать, такие какGPUImageRGBFilter, GPUImageSepiaFilterи т. д. МоглиGPUImageChromaKeyFilter просто сломаться?

Буду признателен за любую помощь в этом, поскольку в этот момент я очищаю нижнюю часть ствола для прозрачности видео.

Ответы на вопрос(2)

Ваш ответ на вопрос