【发布时间】:2020-01-09 06:04:21
【问题描述】:
我正在尝试将 CIFilters 添加到视频中。但是我使用 UISliders 更改了值,因为 AVPlayer 需要时间来播放过滤器添加的视频。我搜索了这个问题,UISlider 值不断变化,它也采用浮点值。因为每次过滤器都会添加到视频和播放中。我想知道当滑块值连续变化时如何改变 CIFilter 的值和不延迟 AVPlayer 的值。
float value = sender.value;
CIFilter *filter = [CIFilter filterWithName:@"CIColorControls"];
AVVideoComposition *composition = [AVVideoComposition videoCompositionWithAsset:tempAVAsset applyingCIFiltersWithHandler:
^(AVAsynchronousCIImageFilteringRequest *request){
NSError *err = nil;
CIImage *filtered = [request.sourceImage imageByClampingToExtent];
[filter setDefaults];
[filter setValue:filtered forKey:kCIInputImageKey];
[filter setValue:[NSNumber numberWithFloat:0.00] forKey:@"inputSaturation"];
[filter setValue:[NSNumber numberWithFloat:0.00] forKey:@"inputBrightness"];
[filter setValue:[NSNumber numberWithFloat:value] forKey:@"inputContrast"];
CIImage *output = [filter.outputImage imageByCroppingToRect:request.sourceImage.extent];
if (filtered)
[request finishWithImage:output context:nil];
else
[request finishWithError:err];
}];
【问题讨论】:
标签: ios objective-c avplayer uislider cifilter