小编Geo*_*all的帖子

iOS 10打破自定义CIFilter

我编写了一个抠像滤镜,使MPEG电影的背景透明,这样您就可以将电影文件用于更长的动画,而无需冗长的PNG序列(某些类型的iOS动画通常这样做)。

我正在使用AVPlayerAVVideoComposition和自定义CIFilter来在背景图片上渲染视频。用户可以通过与应用程序进行交互来动态更改背景图片。

直到iOS 10出现,现在它已经坏了,这种方法才能正常工作。

现在发生的事情是视频正在播放,但是没有色度键发生,并且Xcode反复吐出以下错误:

need a swizzler so that YCC420v can be written.
Run Code Online (Sandbox Code Playgroud)

这是CIFilter应产生的图像:

自定义CIFilter工作的结果(iOS 10之前的版本)

相反,这是它产生的结果(自iOS 10起):

CIFilter损坏的结果(iOS 10之后)

这是我的代码中创建EAGLContext和应用自定义的部分CIFilter

    let myEAGLContext = EAGLContext.init(API: EAGLRenderingAPI.OpenGLES2)
    //let cicontext = CIContext.init(EAGLContext: myEAGLContext, options: [kCIContextWorkingColorSpace: NSNull()])
    let cicontext = CIContext.init(EAGLContext: myEAGLContext)

    let filter = ChromaKeyFilter()
    filter.activeColor = CIColor.init(red: 0, green:1.0, blue: 0.0)
    filter.threshold = self.threshold

    //most of below comes from the "WWDC15 What's New In Core Image" slides
    let …
Run Code Online (Sandbox Code Playgroud)

glsl avfoundation cifilter swift ios10

4
推荐指数
1
解决办法
968
查看次数

标签 统计

avfoundation ×1

cifilter ×1

glsl ×1

ios10 ×1

swift ×1