Ios 无法使用GPUImage编辑视频
我已经使用AVFoundation创建了视频,现在我想通过GPUImage框架对其进行编辑。Ios 无法使用GPUImage编辑视频,ios,objective-c,iphone,gpuimage,Ios,Objective C,Iphone,Gpuimage,我已经使用AVFoundation创建了视频,现在我想通过GPUImage框架对其进行编辑。我已经按照说明设置了所有设置。在看到他的“SimpleVideoFileFilter”示例后,我刚刚复制了他的代码,并将我的资源URL替换为视频。这是代码 movieFile = [[GPUImageMovie alloc] initWithURL:player.contentURL]; pixellateFilter = [[GPUImagePixellateFilter alloc] init];
我已经按照说明设置了所有设置。在看到他的“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-缺少附件。摘自苹果讨论论坛- 据论坛介绍, 结果你不得不打电话: glDrawBuffer(GL_NONE)
glReadBuffer(GLU无) 在源缓冲区和目标缓冲区上。i、 e两个缓冲区都必须 阅读并画完整 这就是为什么当我离开时,我在缓冲区上得到了一个似乎翻转的状态 检查过了 干杯。
YJ 通过阅读,我知道当视频没有音频时会发生这种错误
我也有同样的问题。我没有音频资源(视频)。所以面对这个错误 为了解决这个错误,我刚刚替换了
movieFile.audioEncodingTarget = movieWriter;
到
代码运行正常。请将代码块和错误消息作为
代码块
而不是图像发布。您在图像中看到的代码不是我写的。您可以看到文件名GPUImageMovieWriter.m,它是status
?@BlackFrog的值,不是我写的。。。。这是GPUImage.framework中的文件当我将指针放在状态上时,它显示36055作为值。它对我有效。iOS11.1.2无法使用筛选器写入视频。其他版本的iOS没有这个问题。现在我创建无音频过滤视频的方式。并结合vdieo和原始视频的音频轨迹。
movieFile.audioEncodingTarget = movieWriter;
movieFile.audioEncodingTarget = nil;