使用GPU图像框架对视频的影响,但电影编写器的完成块从未被调用?

时间:2014-06-17 12:13:56

标签: ios objective-c gpuimage

self.movie = [[GPUImageMovie alloc]initWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"merge_video" ofType:@"mp4"]]];

self.sketchFilter = [[GPUImageSketchFilter alloc]init];

[self.movie addTarget:self.sketchFilter];

self.movie.runBenchmark = YES;

self.movie.playAtActualSpeed = NO;

NSString *pathToMovie = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/MyMovie.m4v"];

unlink([pathToMovie UTF8String]);

NSURL *movieURL = [NSURL fileURLWithPath:pathToMovie];

self.writer = [[GPUImageMovieWriter alloc]initWithMovieURL:movieURL size:CGSizeMake(320, 320)];

[self.sketchFilter addTarget:self.writer];

[self.writer setShouldPassthroughAudio:YES];

[self.movie setAudioEncodingTarget: self.writer];

__weak GPUImageMovieWriter *weakSelf = writer;

[self.movie enableSynchronizedEncodingUsingMovieWriter: weakSelf];

[ weakSelf startRecording];

[self.movie startProcessing];

[weakSelf setCompletionBlock:^{
    NSLog(@"Effecting Completed Succefully");
    [self.sketchFilter removeTarget:weakSelf];
    [weakSelf finishRecording];
}];

1 个答案:

答案 0 :(得分:0)

您没有显示定义writer实例变量的位置,但我敢打赌您将其创建为实例变量,然后创建了writer属性,而后者由生成的{ {1}}变量。

这意味着_writer在上面是零,你的电影甚至从未开始处理。请改用writer