【问题标题】:GPUImage issue iPhoneGPUImage 问题 iPhone
【发布时间】:2012-11-30 12:11:55
【问题描述】:

我在 iphone 中使用 GPUImage 框架在视频文件中添加一些过滤器。过滤器已成功应用。但我面临的问题是 setCompletionBlock 被连续调用两次。有人可以建议我这段代码有什么问题吗?

- (IBAction)applyFilter:(id)sender {

NSString *path = [[NSBundle mainBundle] pathForResource:@"OriginalVideo" ofType:@"mp4"];
NSURL *url = [NSURL fileURLWithPath:path];
GPUImageMovie *movieFile = [[GPUImageMovie alloc] initWithURL:url];
GPUImageSepiaFilter *filter = [[GPUImageSepiaFilter alloc] init];

[movieFile addTarget:filter];

NSString *pathToMovie = [Utilities getPathForFileName:@"finalvideo.mp4"];
if ([[NSFileManager defaultManager] fileExistsAtPath:pathToMovie]) {
    [[NSFileManager defaultManager] removeItemAtPath:pathToMovie error:nil];
}

unlink([pathToMovie UTF8String]);
NSURL *movieURL = [NSURL fileURLWithPath:pathToMovie];

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

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

[movieWriter setCompletionBlock:^{
    NSLog(@"finished..............................");

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

[movieWriter startRecording];
[movieFile startProcessing];
}

【问题讨论】:

  • 我相信这是框架中的一个已知错误,所以我会搜索 GitHub 问题以查找有关此内容的提及。

标签: iphone objective-c ios video gpuimage


【解决方案1】:
movieFile.runBenchmark = YES;
movieFile.playAtActualSpeed = YES;
[movieFile prepareForImageCapture];

在应用过滤器时调用这些方法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-14
    • 1970-01-01
    • 2013-11-11
    • 2011-10-18
    • 2011-03-08
    • 2011-10-28
    • 2011-10-03
    • 2011-06-06
    相关资源
    最近更新 更多