如何为AVVideoComposition设置透明背景?

时间:2011-07-13 12:20:46

标签: iphone avfoundation transparent background-color avcomposition

更新 - 我已经为回答这个问题添加了50点声望奖励!

我有一个应用程序,需要将一些视频和照片放在一起,以便从中创建一部电影。我正在使用AVMutableComposition。为了能够指导视频如何组合,我必须使用AVMutableVideoComposition。这个东西有一个名为backgroundColor的属性,Apple文档说:

  

仅支持纯色BGRA颜色;模式和其他支持   颜色被忽略了。如果渲染的像素缓冲区没有alpha,   忽略背景颜色的alpha值。

我从中理解的是,有一种方法可以将alpha通道添加到backgroundColor,但我只是不明白如何。 If the rendered pixel buffer does not have alpha, the alpha value of the background color is ignored.是什么意思?我怎么能添加这样的东西?

如果我只做myVideoCompositionInstruction.backgroundColor = [[UIColor colorWithWhite:1 alpha:0] CGColor];它只是不起作用 - 背景保持白色并且不会透明。

非常感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:1)

在Apple的AVVideoCompositionInstruction文档中,您要设置的属性backgroundColor属于CGColorRef类型。

我的赌注是,因为您使用 UIColor 设置backgroundColor,然后通过 CGColor 属性获取其值,由于某种原因,alpha value不会传递给CGColorRef对象。您知道白色值已通过,因为默认颜色为黑色。

UIColor有一些限制。我建议你阅读以下article。请特别注意文章“UIColor的问题”部分。

我猜你问题的最佳解决方案是直接用 CGColor 定义backgroundColor(例如使用CGColorCreate),而不是UIColor。