Применить эффект Через несколько секунд в GpuImagefilter - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь применить эффект Greenscreen к любому видео.Я добился этого с помощью библиотеки gpuimage и ее chromakeyfilter.Сделано идеальное слияние эффекта на видео.Но теперь я хочу установить зеленый эффект на видео через несколько секунд.Например, видео будет воспроизводиться без эффекта после того, как будет установлен 10-секундный эффект, и будет продолжаться видео в течение 10 секунд. Я установил задержку, но оно воспроизводится через 10 секунд с эффектом, но не воспроизводит первую 10-секундную часть, которая не имеет эффекта.

 NSURL *effUrl = _effectURL;
    NSURL *vidUrl = _videoURL;

    AVAsset *asst=[AVAsset assetWithURL:_videoURL];
    AVAssetTrack *videoAssetTrack=[[asst tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0];

    _gpuMovieFX1=[[GPUImageMovie alloc]initWithURL:effUrl];
    _gpuMovieA1=[[GPUImageMovie alloc]initWithURL:vidUrl];

    self.filter = [[GPUImageChromaKeyBlendFilter alloc] init];
    self.filter.thresholdSensitivity=0.10;
    self.filter.smoothing=0.5;
    [self.filter setColorToReplaceRed:0 green:1 blue:0];
    [self.filter forceProcessingAtSize:videoAssetTrack.naturalSize/*self.videoController.view.frame.size*/];

    [_gpuMovieFX1 addTarget:_filter];
    _gpuMovieFX1.shouldRepeat=YES;
    _gpuMovieFX1.playAtActualSpeed=YES;
    _gpuMovieFX1.runBenchmark=YES;
    [_filter addTarget:_viewPreview];

    [_gpuMovieA1 addTarget:_filter];
    _gpuMovieA1.shouldRepeat=YES;
    _gpuMovieA1.playAtActualSpeed=YES;
    _gpuMovieA1.runBenchmark=YES;
    [_filter addTarget:_viewPreview];

    [_gpuMovieA1 startProcessing];

    [self performSelector:@selector(effectProcess) withObject:nil afterDelay:10];


-(void)effectProcess{
[_gpuMovieFX1 startProcessing];}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...