5

更新- 我添加了 50 声望赏金来回答这个问题!

我有一个应用程序,它需要将一些视频和照片放在一起来制作电影。我为此使用 AVMutableComposition。为了能够指导它如何合成视频,我必须使用 AVMutableVideoComposition。这个东西有一个叫做的属性backgroundColor,苹果文档说:

仅支持纯 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];是行不通的-背景保持白色并且不透明。

任何帮助将不胜感激,谢谢!

4

1 回答 1

2

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

我敢打赌,因为您backgroundColor使用UIColor进行设置,然后才通过CGColor属性获取它的值,因此由于某种原因,alpha 值不会传递到 CGColorRef 对象中。您知道白色值被传递,因为默认颜色是黑色。

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

我猜您的问题的最佳解决方案是直接使用 CGColor 定义(例如使用backgroundColorCGColorCreate 而不是 UIColor。

于 2011-07-16T19:10:55.570 回答