0
我使用GPUImage在視頻上添加了疊加層。預覽它看起來不錯,但我怎麼寫我的視頻文件?我使用GPUMovieWriter,但我無法找到這個文件,我甚至不知道它是否工作。這裏是我的代碼:ios保存GPUImage視頻
-(void)setUpCameraWithPosition:(bool)switchToFrontCamera
{
if(videoCamera != nil)
{
[videoCamera stopCameraCapture];
}
if(switchToFrontCamera) {
videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionFront];
}
else {
videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack];
}
videoCamera.outputImageOrientation = UIInterfaceOrientationPortrait;
videoCamera.horizontallyMirrorFrontFacingCamera = NO;
videoCamera.horizontallyMirrorRearFacingCamera = NO;
filter = [GPUImageiOSBlurFilter new];
filter.blurRadiusInPixels = 3.0;
GPUImageAlphaBlendFilter *blendFilter = [[GPUImageAlphaBlendFilter alloc] init];
blendFilter.mix = 1.0;
NSDate *startTime = [NSDate date];
UILabel *timeLabel = [[UILabel alloc] initWithFrame:CGRectMake(0.0, 0.0, 240.0f, 320.0f)];
timeLabel.font = [UIFont systemFontOfSize:17.0f];
timeLabel.text = @"Time: 0.0 s";
timeLabel.textAlignment = UITextAlignmentCenter;
timeLabel.backgroundColor = [UIColor clearColor];
timeLabel.textColor = [UIColor whiteColor];
[videoCamera addTarget:filter];
GPUImageView *filterView = (GPUImageView *)self.preview;
filterView.fillMode = kGPUImageFillModePreserveAspectRatioAndFill;
NSString *pathToMovie = [NSHomeDirectory() stringByAppendingPathComponent:@"file.mov"];
unlink([pathToMovie UTF8String]); // If a file already exists, AVAssetWriter won't let you record new frames, so delete the old movie
NSURL *movieURL = [NSURL fileURLWithPath:pathToMovie];
movieWriter = [[GPUImageMovieWriter alloc] initWithMovieURL:movieURL size:CGSizeMake(480.0, 640.0)];
movieWriter.encodingLiveVideo = YES;
[filter addTarget:movieWriter];
uiElementInput = [[GPUImageUIElement alloc] initWithView:timeLabel];
[filter addTarget:blendFilter];
[uiElementInput addTarget:blendFilter];
[blendFilter addTarget:filterView];
__unsafe_unretained GPUImageUIElement *weakUIElementInput = uiElementInput;
[filter setFrameProcessingCompletionBlock:^(GPUImageOutput * filter, CMTime frameTime){
timeLabel.text = [NSString stringWithFormat:@"Time: %f s", -[startTime timeIntervalSinceNow]];
[weakUIElementInput update];
}];
[videoCamera startCameraCapture];
}
如何將我的電影寫入AssetsLibrary?