在GPUImage中使用实时滤镜最简单的方法就是使用GPUImageVideoCamera这个类。通过添加滤镜来实时显示音视频。

前面http://blog.csdn.net/Xoxo_x/article/details/57079331我们知道:
首先我们要了解,下面的内容:
GPUImageOutput(输出)中含有如下方法
滤镜GPUImageFilter继承 GPUImageOutput(输出),并遵守GPUImageInput(输入)协议
这就意味着
– 重点:
所有的滤镜既可以是GPUImageOutput对象,也是id对象。
更深入一点,这说明了滤镜是可以叠加的!也就是传说中的组合滤镜。
GPUImageView有如下定义:
GPUImageVideoCamera有如下定义:
在滤镜、camera、GPUImageView三者的关系中,可以有以下组合:
滤镜 | GPUImageInput\GPUImageOutput |
---|---|
camera | GPUImageOutput |
GPUImageView | GPUImageInput |
组合方式 | 内容 |
---|---|
组合一 | [滤镜 addTarget GPUImageView]; |
组合二 | [camera addTarget 滤镜]; |
组合三 | [camera addTarget GPUImageView]; |
我们当我们想要使用滤镜、相机、并显示的时候,
【组合二 + 组合一 】
合并在一起才完美。
将相机的数据输出到滤镜、再将滤镜的数据输出到GPUImageView上。
这使得我们发现,其实滤镜在处理过程中是属于一个通道的地位
于是乎,代码呼之欲出:
//相机
GPUImageVideoCamera* videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack];
//滤镜
GPUImageSepiaFilter *filter = [[GPUImageSepiaFilter alloc] init];
//显示view
GPUImageView *filterView = (GPUImageView *)self.view;
//组合
[videoCamera addTarget:filter];
[filter addTarget:filterView];
//相机开始运行
[videoCamera startCameraCapture];
于是我们发现6行代码就搞定了视频采集并添加实时滤镜
效果如下:
那么组合滤镜呢?
加代码如下:
GPUImageLuminanceRangeFilter *filter1 = [[GPUImageLuminanceRangeFilter alloc]init];
//组合
[videoCamera addTarget:filter];
[filter addTarget:filter1];
[filter1 addTarget:filterView];
效果如下:
关于demo:一共8行代码,需要自己撸一下吧!
//组合
[videoCamera addTarget:filter];
[filter addTarget:filter1];
[filter1 addTarget:filterView];
滤镜组合调换顺序会有惊喜!
最后附上所有代码:
//相机
GPUImageVideoCamera* videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack];
//滤镜
GPUImageSepiaFilter *filter = [[GPUImageSepiaFilter alloc] init];
GPUImageLuminanceRangeFilter *filter1 = [[GPUImageLuminanceRangeFilter alloc]init];
//显示view
GPUImageView *filterView = (GPUImageView *)self.view;
//组合
[videoCamera addTarget:filter];
[filter addTarget:filter1];
[filter1 addTarget:filterView];
//相机开始运行
[videoCamera startCameraCapture];
iOS GPUImage研究序一:内置滤镜:
http://blog.csdn.net/Xoxo_x/article/details/57082804
iOS GPUImage研究二:捕获图像stillCamera写入相册
http://blog.csdn.net/Xoxo_x/article/details/57086446