Звучит так, как будто вы хотите сделать что-то вроде хроматической манипуляции с вашим видео.Я только добавил возможность сделать это в мою GPUImage инфраструктуру, которая, как следует из названия, использует обработку на основе графического процессора для выполнения этих операций во много раз быстрее, чем фильтры, связанные с процессором.
Пример SimpleVideoFileFilter в рамках показывает, как загрузить фильм, отфильтровать его и закодировать обратно на диск.Изменение этого параметра для выполнения хроматизации дает следующее:
NSURL *sampleURL = [[NSBundle mainBundle] URLForResource:@"sample" withExtension:@"m4v"];
movieFile = [[GPUImageMovie alloc] initWithURL:sampleURL];
filter = [[GPUImageChromaKeyBlendFilter alloc] init];
[filter setColorToReplaceRed:0.0 green:0.0 blue:1.0];
[filter setThresholdSensitivity:0.4];
[movieFile addTarget:filter];
UIImage *inputImage = [UIImage imageNamed:@"background.jpg"];
sourcePicture = [[GPUImagePicture alloc] initWithImage:inputImage smoothlyScaleOutput:YES];
[sourcePicture addTarget:filter];
NSString *pathToMovie = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Movie.m4v"];
NSURL *movieURL = [NSURL fileURLWithPath:pathToMovie];
movieWriter = [[GPUImageMovieWriter alloc] initWithMovieURL:movieURL size:CGSizeMake(480.0, 640.0)];
[filter addTarget:movieWriter];
[movieWriter startRecording];
[movieFile startProcessing];
[movieWriter setCompletionBlock:^{
[filter removeTarget:movieWriter];
[movieWriter finishRecording];
}];
Приведенный выше код будет загружать фильм из ресурсов приложения с именем sample.m4v
, подавать его в фильтр хроматических ключей, для которого установлено значение «ключ от чистого»синего цвета с чувствительностью 0,4, прикрепите фоновое изображение, чтобы использовать его для цветовой кодировки, а затем отправьте все это в кодировщик фильмов, который записывает Movie.m4v
в каталог приложения /Documents
.
Вы можете настроитьпорог и определенный синий оттенок, чтобы соответствовать вашим потребностям, а также заменить входное изображение другим фильмом или другим источником по мере необходимости.Этот процесс также может быть применен к видео в реальном времени с камеры устройства iOS, и вы можете отобразить результаты на экране, если хотите.
На iPhone 4 под управлением iOS 5.0 хроматографическое нажатие занимает 1,8 мс (500+ FPS) для 640x480 кадров видео, 65 мс для 720p кадров (15 FPS).Новые устройства на базе A5 в 6-10 раз быстрее, чем для этих операций, поэтому они могут обрабатывать видео 1080p без проблем.Я использую быстрые кэши текстур в iOS 5.0 для загрузки и извлечения кадров, что ускоряет обработку в этой версии ОС более 4.x.
Единственное предупреждение, которое я имею по этому поводу, это то, что я не совсем понялзвук для записи прямо в кодировке моего фильма, но я сейчас над этим работаю.