我已经使用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");
});
}];
但是我收到了以下错误。
请帮我解决这个问题。
答案 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