带有 GPUImageChromaKeyFilter 的视频在透明 GPUImageView 中播放时有色调?
Video with GPUImageChromaKeyFilter has tint when played in transparent GPUImageView?
我有一个纯绿色背景的视频,我正在尝试使用 GPUImageChromaKeyFilter 使其透明。
当我为播放器视图设置清晰的颜色时,结果是视频并不是真正透明,而是将背景着色:
当我把背景改成白色的时候,绿色的背景没有了,但是很明显视图是不透明的:
我做错了什么?
我的代码是:
let movie = GPUImageMovie(URL: url)
let filter = GPUImageChromaKeyFilter()
filter.setColorToReplaceRed(0, green: 1, blue: 0)
movie.addTarget(filter)
let playerView = GPUImageView()
playerView.backgroundColor = UIColor.clearColor()
playerView.setBackgroundColorRed(0, green: 0, blue: 0, alpha: 0)
let trinity = (movieFile, filter, playerView)
filter.addTarget(playerView)
movie.startProcessing()
我正在存储电影、过滤器和视图以避免 ARC 在退出范围时释放它们,我将视图添加到正确的超级视图并使用自动布局定位它。
我使用的视频是 h264 视频 - https://dl.dropboxusercontent.com/u/1400954/Coin.mp4
我成功了。解决方法是使用GPUImageChromaKeyBlendFilter。
它通过用第二个源中的像素替换第一个源中 setColorToReplaceRed 中指定颜色的像素来混合两个源。
所以我制作了一个带有透明 UIImage 的 GPUImagePicture,并将过滤器作为目标添加到它。您可以使用透明 PNG 或构建一个 UIImage 并在代码中用透明填充它(空 UIImage 将不起作用!)
现在一切正常!
密码是
let filter = GPUImageChromaKeyBlendFilter()
filter.setColorToReplaceRed(0, green: 1, blue: 0)
let movieFile = GPUImageMovie(URL: url)
movieFile.addTarget(filter)
let backgroundImage = UIImage(named: "MTransparent")
let sourcePicture = GPUImagePicture(image: backgroundImage, smoothlyScaleOutput: true)
sourcePicture.addTarget(filter)
sourcePicture.processImage()
let playerView = GPUImageView()
playerView.backgroundColor = UIColor.clearColor()
filter.addTarget(playerView)
movieFile.startProcessing()
我有一个纯绿色背景的视频,我正在尝试使用 GPUImageChromaKeyFilter 使其透明。
当我为播放器视图设置清晰的颜色时,结果是视频并不是真正透明,而是将背景着色:
当我把背景改成白色的时候,绿色的背景没有了,但是很明显视图是不透明的:
我做错了什么?
我的代码是:
let movie = GPUImageMovie(URL: url)
let filter = GPUImageChromaKeyFilter()
filter.setColorToReplaceRed(0, green: 1, blue: 0)
movie.addTarget(filter)
let playerView = GPUImageView()
playerView.backgroundColor = UIColor.clearColor()
playerView.setBackgroundColorRed(0, green: 0, blue: 0, alpha: 0)
let trinity = (movieFile, filter, playerView)
filter.addTarget(playerView)
movie.startProcessing()
我正在存储电影、过滤器和视图以避免 ARC 在退出范围时释放它们,我将视图添加到正确的超级视图并使用自动布局定位它。
我使用的视频是 h264 视频 - https://dl.dropboxusercontent.com/u/1400954/Coin.mp4
我成功了。解决方法是使用GPUImageChromaKeyBlendFilter。 它通过用第二个源中的像素替换第一个源中 setColorToReplaceRed 中指定颜色的像素来混合两个源。
所以我制作了一个带有透明 UIImage 的 GPUImagePicture,并将过滤器作为目标添加到它。您可以使用透明 PNG 或构建一个 UIImage 并在代码中用透明填充它(空 UIImage 将不起作用!)
现在一切正常!
密码是
let filter = GPUImageChromaKeyBlendFilter()
filter.setColorToReplaceRed(0, green: 1, blue: 0)
let movieFile = GPUImageMovie(URL: url)
movieFile.addTarget(filter)
let backgroundImage = UIImage(named: "MTransparent")
let sourcePicture = GPUImagePicture(image: backgroundImage, smoothlyScaleOutput: true)
sourcePicture.addTarget(filter)
sourcePicture.processImage()
let playerView = GPUImageView()
playerView.backgroundColor = UIColor.clearColor()
filter.addTarget(playerView)
movieFile.startProcessing()