【发布时间】:2021-06-14 03:31:10
【问题描述】:
我正在尝试播放本地视频并实时应用CIFilter,没有延迟。我怎样才能做到这一点?我已经知道如何将CIFilter 应用到AVPlayer 中的视频,但它的性能并没有我想要的那么快。
这是我当前的代码:
@objc func exposure(slider: UISlider, event: UIEvent) {
if let touchEvent = event.allTouches?.first {
switch touchEvent.phase {
case .moved:
player.currentItem?.videoComposition = AVVideoComposition(asset: player.currentItem!.asset, applyingCIFiltersWithHandler: { request in
let exposureFilter = CIFilter.exposureAdjust()
exposureFilter.inputImage = request.sourceImage.clampedToExtent()
exposureFilter.ev = slider.value
let output = self.exposureFilter.outputImage!.cropped(to: request.sourceImage.extent)
// Provide the filter output to the composition
request.finish(with: output, context: nil)
})
default:
break
}
}
}
【问题讨论】:
-
欢迎您!您能描述一下您使用的是哪种过滤器吗?根据过滤器的不同,过滤操作本身可能非常昂贵,导致播放期间的 FPS 较低。
-
嗨弗兰克!我正在应用曝光、对比度、温度等基本滤镜。这些滤镜是通过移动滑块来应用的,这就是我需要实时性能的原因。
-
我明白了。您能否发布一些代码来显示您如何应用过滤器以及更改滑块如何更改过滤器值?谢谢!
-
完成@FrankSchlegel
-
@FrankSchlegel 如何解决播放过程中 FPS 少的问题?