我编写了一个抠像滤镜,使MPEG电影的背景透明,这样您就可以将电影文件用于更长的动画,而无需冗长的PNG序列(某些类型的iOS动画通常这样做)。
我正在使用AVPlayer
,AVVideoComposition
和自定义CIFilter
来在背景图片上渲染视频。用户可以通过与应用程序进行交互来动态更改背景图片。
直到iOS 10出现,现在它已经坏了,这种方法才能正常工作。
现在发生的事情是视频正在播放,但是没有色度键发生,并且Xcode反复吐出以下错误:
need a swizzler so that YCC420v can be written.
Run Code Online (Sandbox Code Playgroud)
这是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)