2016-03-03 38 views
0

//整個代碼看起來不錯,但movieWriter - setCompletionBlock行沒有得到編譯。不知道它有什麼問題。GPUImage視頻過濾器設置亮度不工作

我試圖解決,因爲過去3天,但沒有得到它成功的工作。

-(IBAction)setBrightness:(id)sender 
{  
    sleep(1); 

    NSURL *sampleURL = [NSURL URLWithString:_videoURLPath]; 
    movieFile = [[GPUImageMovie alloc] initWithURL:sampleURL]; 
    movieFile.runBenchmark = YES; 
    movieFile.playAtActualSpeed = NO; 

    filterView = (GPUImageView *)gpuView; 
    filter=[[GPUImageBrightnessFilter alloc]init]; 
    [movieFile addTarget:filter]; 
    [filter addTarget:filterView]; 

    [(GPUImageBrightnessFilter *)filter setBrightness:brightValue]; 

    unlink([pathToMovie UTF8String]); // If a file already exists, AVAssetWriter won't let you record new frames, so delete the old movie 

    NSURL *movieURL = [NSURL fileURLWithPath:pathToMovie];enter code here 

    movieWriter = [[GPUImageMovieWriter alloc] initWithMovieURL:movieURL size:CGSizeMake(320.0, 320.0)]; 
    [filter addTarget:movieWriter]; 

    movieWriter.shouldPassthroughAudio = NO; 
    movieFile.audioEncodingTarget = movieWriter; 
    [movieFile enableSynchronizedEncodingUsingMovieWriter:movieWriter]; 

    [movieWriter startRecording]; 
    [movieFile startProcessing]; 

    [movieWriter setCompletionBlock:^{ 

     [filter removeTarget:movieWriter]; 
     [movieWriter finishRecording]; 

     dispatch_async(dispatch_get_main_queue(), ^{ 

      [_toolDelegate stringPathOfFilteredVideoFromTool:pathToMovie]; 
      [self.navigationController popViewControllerAnimated:YES]; 

     }); 
    }]; 
} 
+0

我有同樣的問題。 – DJ1

回答

0

這對我有效。

[movieWriter setCompletionBlock:^{ 

    [filter removeTarget:movieWriter]; 
    [movieWriter finishRecording]; 
}]; 

只需將上面的代碼替換爲下面的代碼即可。

dispatch_async(dispatch_get_main_queue(), ^{ 
    [filter removeTarget:movieWriter]; 
    [movieWriter finishRecording]; 
    NSLog(@"aa2233453546565");   
});