https://www.jianshu.com/p/4701d006b514
核心思路
1. GPUImageVideoCamera 采集视频: CMSampleBufferRef
采集音频:CMSampleBufferRef
2. 渲染滤镜:filter
3. 输出: 显示 GPUImageView
写入视频 GPUImageMovieWriter
1. 连接视频滤镜
// 摄像头
_videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack];
_videoCamera.outputImageOrientation = [UIApplication sharedApplication].statusBarOrientation;
// 滤镜
_filter = [[GPUImageSepiaFilter alloc] init];
_filterView = [[GPUImageView alloc] initWithFrame:self.view.frame];
self.view = _filterView;
// 响应链
[_videoCamera addTarget:_filter];
[_filter addTarget:_filterView];
[_videoCamera startCameraCapture];
2. 开始录制
_movieWriter = [[GPUImageMovieWriter alloc] initWithMovieURL:movieURL size:CGSizeMake(480.0, 640.0)];
_movieWriter.encodingLiveVideo = YES;
[_filter addTarget:_movieWriter];
_videoCamera.audioEncodingTarget = _movieWriter;
[_movieWriter startRecording];
3. 结束录制
[_filter removeTarget:_movieWriter];
_videoCamera.audioEncodingTarget = nil;
[_movieWriter finishRecording];