我是 GPUImage 的新手,我将 GPUImage 添加到默认单 View 模板 Xcode 5.1.1 应用程序。我成功地使用了静态 GPUImage 库,并且正在尝试自述文件中的示例。我有 iO S7.1 作为基础 SDK。该应用程序编译并加载,视频只是卡住。无论有没有过滤器,它都会卡住。 我该如何解决?我想显示应用了滤镜的实时相机预览
github repo 中包含的示例可以正常编译和运行。
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
GPUImageVideoCamera *videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset352x288 cameraPosition:AVCaptureDevicePositionBack];
videoCamera.outputImageOrientation = UIInterfaceOrientationPortrait;
GPUImageFilter *customFilter = [[GPUImageSepiaFilter alloc]init];
GPUImageView *filteredVideoView = [[GPUImageView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320, 320)];
[self.view addSubview:filteredVideoView];
// Add the view somewhere so it's visible
[videoCamera addTarget:customFilter];
[customFilter addTarget:filteredVideoView];
[videoCamera startCameraCapture];
}
这是我运行 iOS 7.1 的 iPhone 5 的屏幕截图。
最佳答案
它卡住了,因为您的 GPUImageVideoCamera 正在被释放。您将其创建为局部变量,而不是实例变量或属性,因此一旦您的设置方法完成,ARC 就会释放它。这将拆除其余的图像处理管道。
您需要将 GPUImageVideoCamera 实例设为类的属性或实例变量,以便在设置方法之外对其进行强引用。相机需要在该方法之外持续存在,因此您需要确保它确实存在。相机将对其下游的任何内容保持强烈的引用,因此您不需要对过滤器执行相同的操作,除非您想在某个时候调整它们。
关于ios - 基本 GPUImage iOS7 应用程序视频卡住/不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25434652/