当使用AVVideoCompositionCoreAnimationTool为我的某个视频添加文本叠加时,第一帧大部分时间都是黑色的。当我注释掉属于动画工具及其设置的所有代码时,一切都按预期工作,第一帧永远不会是黑色。因此,我开始认为用于构成完成视频的AVMutableComposition确实按预期工作并正确配置。以下代码用于设置文本图层:
CALayer* layer = [CALayer layer];
layer.frame = CGRectMake(0, 0, 480, 480);
layer.opacity = 0.0f;
CATextLayer* textLayer = [[CATextLayer alloc] init];
textLayer.frame = CGRectMake(0, 0, 450, 80);
[textLayer setString:@"mytext"];
textLayer.foregroundColor = [UIColor whiteColor].CGColor;
textLayer.alignmentMode = kCAAlignmentRight;
[textLayer setFont:CTFontCreateWithName((__bridge CFStringRef)@"HelveticaNeue", 18, &CGAffineTransformIdentity)];
[layer addSublayer:textLayer];
CALayer *parentLayer = [CALayer layer];
CALayer *videoLayer = [CALayer layer];
parentLayer.bounds = CGRectMake(0, 0, 480, 480);
parentLayer.anchorPoint = CGPointMake(0, 0);
parentLayer.position = CGPointMake(0, 0);
videoLayer.bounds = CGRectMake(0, 0, 480, 480);
[parentLayer addSublayer:videoLayer];
videoLayer.position = CGPointMake(CGRectGetMidX(parentLayer.bounds), CGRectGetMidY(parentLayer.bounds));
textLayer.position = CGPointMake(CGRectGetMidX(layer.bounds), 20);
[parentLayer addSublayer:layer];
videoComposition.animationTool = [AVVideoCompositionCoreAnimationTool videoCompositionCoreAnimationToolWithPostProcessingAsVideoLayer:videoLayer inLayer:parentLayer];
有关如何解决此问题的任何想法?
答案 0 :(得分:0)
请查看此链接
http://www.raywenderlich.com/30200/avfoundation-tutorial-adding-overlays-and-animations-to-videos
或
检查您是否从初始时间(0秒)开始视频对话。因为我在向视频添加文本时遇到同样的问题,我已经通过更改其初始时间来解决它。
希望这会对你有所帮助。
答案 1 :(得分:0)
对于未来的任何人来说,这就是我所做的:显然AVVideoCompositionCoreAnimationTool与AVMutableVideoCompositions不相称。因此,我首先使用AVAssetExportSession导出视频和音频但没有我的CALayer,然后在第二次传递中添加了覆盖层。我知道这可能不是一个“好”的解决方案,需要更多的处理,但最终它已经解决了。