【发布时间】:2013-09-12 10:44:59
【问题描述】:
我目前正在渲染一个小于输出大小的视频轨道,它工作正常。我想将 UIImage 绘制到背景中,以便视频位于顶部,并且图像显示在视频不存在的区域中。我尝试使用 CoreAnimation 层和 videoCompositionCoreAnimationToolWithPostProcessingAsVideoLayer:inLayer: 但是视频层下面的层似乎没有显示出来(上面的显示很好) - 只是黑色或我在 AVMutableVideoCompositionInstruction 对象上设置的任何背景颜色。我也尝试将背景颜色设置为 [UIColor clearColor].CGColor,但它只是以黑色显示。
有人做过类似的事情并有建议吗?
CALayer *parentLayer = [CALayer layer];
CALayer *videoLayer = [CALayer layer];
CALayer *backgroundLayer = [CALayer layer];
backgroundLayer.frame = rect;
parentLayer.frame = rect;
videoLayer.frame = rect;
videoLayer.backgroundColor = [UIColor clearColor].CGColor;
backgroundLayer.backgroundColor = [UIColor purpleColor].CGColor;
[parentLayer addSublayer:backgroundLayer];
[parentLayer addSublayer:videoLayer];
mainCompositionInst.animationTool = [AVVideoCompositionCoreAnimationTool videoCompositionCoreAnimationToolWithPostProcessingAsVideoLayer:videoLayer inLayer:parentLayer];
【问题讨论】:
-
为什么不把videoLayer设置成视频的大小,这样周围就没有黑色背景了?
-
我有两个视频轨道设置在两个不同的位置,所以如果我这样做,它们之间仍然会有黑色。我通过将我的背景渲染成一个短视频然后将其添加为轨道来解决这个问题。不过,这并不是我的问题的真正答案——我觉得可能没有。
-
你有什么解决办法吗?我也面临同样的问题...
标签: ios objective-c video uiimage avfoundation