我正在开发的应用程序允许用户使用所选效果录制视频。它基于 GPUIamge FilterShowcase 示例。
我刚刚添加了捕获当前所选视频效果的静态图像的选项。
捕获静止图像可以工作,但速度非常慢。从调用捕获静止图像方法到实际保存图像有一个较长的延迟(1到2秒)。
有没有更优化的方法来实现这一点?
谢谢。
代码如下:
-(IBAction)savePhotoWithEffects:(id)sender
{
// disable buttons - prevent user
btnPhoto.enabled=NO;
btnRecord.enabled=NO;
// stop videoCamera capture
[videoCamera stopCameraCapture];
[stillCamera capturePhotoAsImageProcessedUpToFilter:filter withCompletionHandler:^(UIImage *captureImage, NSError *error){
if (error) {
NSLog(@"ERROR: Could not capture!");
}
else {
// save file
NSLog(@"PHOTO SAVED - ??");
// save photo to album
UIImageWriteToSavedPhotosAlbum(captureImage, nil, nil, nil);
}
runOnMainQueueWithoutDeadlocking(^{
// Start video camera capture again
[videoCamera startCameraCapture];
// enable the take photo and start recording buttons again
btnPhoto.enabled=YES;
btnRecord.enabled=YES;
});
}];
}
最佳答案
如果我不得不猜测,我会说延迟来自于尝试同时运行 GPUImageStillCamera 和 GPUImageVideoCamera。你可以尝试做这样的事情:
[videoCamera pauseCameraCapture];
UIImage *capturedImage = [filter imageFromCurrentlyProcessedOutput];
UIImageWriteToSavedPhotosAlbum(capturedImage, nil, nil, nil);
[videoCamera resumeCameraCapture];
这样你就根本不需要 GPUImageStillCamera。希望这有帮助!
关于ios xcode GPUimage 视频录制和静态图像捕捉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20152989/