2014-02-12 3 views
3

Я пытаюсь объединить два видео с помощью GPUImage. Один из них (show.mov) содержит зеленый фон.
Адрес show.mov и galaxy.mov.
Я скачал последнюю версию GPUImage и изменил SimpleVideoFileFilter пример:Смешайте два видео с ключом цвета с помощью GPUImage

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    _movie = [[GPUImageMovie alloc] initWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"galaxy" ofType:@"mov"]]]; 
    _greenMovie = [[GPUImageMovie alloc] initWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"snow" ofType:@"mov"]]]; 

    _movie.playAtActualSpeed = YES; 
    _greenMovie.playAtActualSpeed = YES; 

    _filter = [[GPUImageChromaKeyBlendFilter alloc] init]; 

    [_greenMovie addTarget:_filter]; 
    [_movie addTarget:_filter]; 

    GPUImageView *filterView = (GPUImageView *)self.view; 
    [_filter addTarget:filterView]; 

    [_greenMovie startProcessing]; 
    [_movie startProcessing]; 
} 

Когда я запускаю проект (независимо от того, на устройстве или тренажере) я просто пустой белый вид и через 14 секунд (длина show.mov) Я вижу только последний кадр смешанных видео. Используя сценарий из примера, создайте файл на диске, но этот файл не открывается.
Я использую iPhone 5 с 7.0.3 и XCode 5.0.2
Я что-то пропустил?

+1

Это, скорее всего, из-за известной ошибки в смешивании двух видеоисточников: https://github.com/BradLarson/GPUImage/issues/1249 –

+0

Спасибо, Брэд. Мне нужно закрыть этот вопрос? –

ответ

1

Благодаря @BradLarson он указал на github issue, где я нашел commit, что вызвало эту проблему.

В GPUImageMovie.m я комментирую две строки в метода:

[inputAsset loadValuesAsynchronouslyForKeys:[NSArray arrayWithObject:@"tracks"] completionHandler: ^{ 
    //runSynchronouslyOnVideoProcessingQueue(^{ 
     NSError *error = nil; 
     AVKeyValueStatus tracksStatus = [inputAsset statusOfValueForKey:@"tracks" error:&error]; 
     if (!tracksStatus == AVKeyValueStatusLoaded) 
     { 
      return; 
     } 
     blockSelf.asset = inputAsset; 
     [blockSelf processAsset]; 
     blockSelf = nil; 
    //}); 
}]; 
+1

Это интересно. Я действительно искал где-то еще. Когда я получу шанс, я рассмотрю еще кое-что. –

Смежные вопросы