用alpha编写多个视频中的视频

时间:2015-05-11 18:12:45

标签: ios objective-c video

我有两个视频,一个是用户使用设备的相机拍摄的,另一个是带有Alpha通道的视频,我想在第一个视频的顶部显示。 我一直在搜索,并没有找到正确的方法来做到这一点。 1.叠加视频的正确格式是什么(带有alpha的格式)? 2.我如何进行两者之间的匹配? 有一个名为Action Movie FX的应用程序正是我正在谈论的内容。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

Ray Wenderlish有一个非常好的教程来做到这一点。 http://www.raywenderlich.com/30200/avfoundation-tutorial-adding-overlays-and-animations-to-videos

如果在彼此之上创建图层的基本概念。例如,以下代码将UILabel添加到视频中:

// 1 - Set up the text layer
CATextLayer *subtitle1Text = [[CATextLayer alloc] init];
[subtitle1Text setFont:@"Helvetica-Bold"];
[subtitle1Text setFontSize:36];
[subtitle1Text setFrame:CGRectMake(0, 0, size.width, 100)];
[subtitle1Text setString:_subTitle1.text];
[subtitle1Text setAlignmentMode:kCAAlignmentCenter];
[subtitle1Text setForegroundColor:[[UIColor whiteColor] CGColor]];

// 2 - The usual overlay
CALayer *overlayLayer = [CALayer layer];
[overlayLayer addSublayer:subtitle1Text];
overlayLayer.frame = CGRectMake(0, 0, size.width, size.height);
[overlayLayer setMasksToBounds:YES];

CALayer *parentLayer = [CALayer layer];
CALayer *videoLayer = [CALayer layer];
parentLayer.frame = CGRectMake(0, 0, size.width, size.height);
videoLayer.frame = CGRectMake(0, 0, size.width, size.height);
[parentLayer addSublayer:videoLayer];
[parentLayer addSublayer:overlayLayer];

composition.animationTool = [AVVideoCompositionCoreAnimationTool
                                     videoCompositionCoreAnimationToolWithPostProcessingAsVideoLayer:videoLayer inLayer:parentLayer];