无法使用 GPUImage 编辑视频

Unable to edit video using 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");
    });
}];

但是我得到以下错误。



请帮我解决这个问题。

不确定这是否是正确答案,但我希望它指向正确的方向。

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

根据论坛,

It turned out you have to call:

glDrawBuffer(GL_NONE)
glReadBuffer(GL_NONE)

on BOTH the source and destination buffers. i.e Both buffers have to be read and draw complete.

This was why I got a seemingly flipped status on the buffers when I checked them.

Cheers.
YJ

通过阅读this我知道当视频没有音频时会出现此错误。
我遇到了同样的问题。我的资产(视频)没有音频。所以面临这个错误。

为了解决这个错误,我刚从

替换了
movieFile.audioEncodingTarget = movieWriter;

movieFile.audioEncodingTarget = nil;

并且代码工作正常。