无法使用GPUImage编辑视频

时间:2015-04-28 10:57:08

标签: ios objective-c iphone gpuimage

我已经使用AVFoundation创建了视频,现在我想通过GPUImage框架进行编辑。
我已根据提及here设置了所有设置。看到他的例子" SimpleVideoFileFilter"我刚刚复制了他的代码并替换了我的视频资产URL。这是代码。

movieFile = [[GPUImageMovie alloc] initWithURL:player.contentURL];
pixellateFilter = [[GPUImagePixellateFilter alloc] init];

[movieFile addTarget:pixellateFilter];

NSString *pathToMovie = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Movie.m4v"];
unlink([pathToMovie UTF8String]);
NSURL *movieURL = [NSURL fileURLWithPath:pathToMovie];

movieWriter = [[GPUImageMovieWriter alloc] initWithMovieURL:movieURL size:CGSizeMake(480.0, 640.0)];
[pixellateFilter addTarget:movieWriter];

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

[movieWriter startRecording];
[movieFile startProcessing];

NSLog(@"precess started");
[movieWriter setCompletionBlock:^{
    [pixellateFilter removeTarget:movieWriter];
    [movieWriter finishRecording];
    dispatch_async(dispatch_get_main_queue(), ^{
        NSLog(@"completed");
    });
}];

但是我收到了以下错误。

error in GPUImage

请帮我解决这个问题。

2 个答案:

答案 0 :(得分:2)

通过阅读this,我知道当视频没有音频时会发生此错误。
我有同样的问题。我没有音频我的资产(视频)。所以面对这个错误。

要解决此错误,我只需替换

movieFile.audioEncodingTarget = movieWriter;

movieFile.audioEncodingTarget = nil;

并且代码工作正常。

答案 1 :(得分:1)

不确定这是否是正确答案,但我希望它能朝着正确的方向发展。

status 36055 的值 0x8CD7 - 缺少附件
摘自Apple论坛 - GL Framebuffer Completeness & Blitting Issues

#define GL_FRAMEBUFFER_COMPLETE                        0x8CD5
#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT           0x8CD6
#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT   0x8CD7
#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER          0x8CDB
#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER          0x8CDC
#define GL_FRAMEBUFFER_UNSUPPORTED                     0x8CDD

根据论坛,

  

原来你必须打电话:

     

glDrawBuffer(GL_NONE)
  glReadBuffer(GL_NONE)

     

在源缓冲区和目标缓冲区上。两个缓冲区都必须   阅读并画完。

     

这就是为什么我在缓冲区看到一个看似翻转的状态   检查了他们。

     

干杯。
  YJ