2014-10-04 4 views
0

Часы превращаются в дни, пытаясь добавить инфраструктуру GPUImage в проект IOS. Теперь у меня это работает. Я пытаюсь пробовать фильтрацию живого видео-кода с веб-страницы Sunset Lake Software. Приложение не удается построить с помощью следующей красной ошибки: 'Использование незаявленных „thresholdfFilter“Добавление рамки GPUImage в проект IOS

GPUImageVideoCamera *videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack]; 
GPUImageFilter *customFilter = [[GPUImageFilter alloc] initWithFragmentShaderFromFile:@"CustomShader"]; 
GPUImageView *filteredVideoView = [[GPUImageView alloc] initWithFrame:CGRectMake(0.0, 0.0, 768, 1024)]; 


// problem here 
[videoCamera addTarget:thresholdFilter]; 

[customFilter addTarget:filteredVideoView]; 

[videoCamera startCameraCapture]; 

Использование Xcode 6.0.1 и приложение тестирования на iPad2 с IOS 8.0.2 - При необходимости, я могу отправить снимки экрана как я опубликовал структуру.

+0

Вы пробовали использовать CocoaPods? – AdamPro13

+0

@Adam - Фантастический! Большое вам спасибо за знакомство с CocoaPods. Теперь у меня GPUImage работает без проблем. Для других это отличный учебник YouTube, который я нашел - http://www.youtube.com/watch?v=9_FbAlq2g9o. Еще раз спасибо. – pete

+0

Нет проблем. В тот день, когда я обнаружил, что CocoaPods изменили мою жизнь. – AdamPro13

ответ

0

Во-первых, код, написанный на моем начальном блоге, объявляющий об этом, не должен копироваться для использования с современной версией фреймворка. Этот начальный пост был написан более двух лет назад и не отражает текущее состояние API. Фактически, я только что удалил весь этот код из оригинального сообщения и перенаправленных людей в инструкции на странице GitHub, которые обновлены. Спасибо за напоминание.

Во-вторых, проблема, которую вы описываете выше, заключается в том, что вы пытаетесь использовать переменную с именем thresholdFilter, не указав при этом такую ​​переменную. Это не проблема с каркасом, компилятор понятия не имеет, о чем вы говорите.

В-третьих, вышеуказанный код не будет работать по другой причине: вы не держитесь за экземпляр вашей камеры. Вы определяете его локально, вместо того, чтобы назначать его переменной экземпляра вашего инкапсулирующего класса. Это приведет к тому, что ARC освободит эту камеру, как только ваш вышеуказанный метод настройки будет завершен, что приведет к черному экрану или сбою. Вам нужно создать переменную или свойство экземпляра и назначить для нее свою камеру, чтобы в ней была сделана сильная ссылка.