10

我知道之前有人问过这个问题(例如这里这里),但我就是不知道我做错了什么。

我有一个AVMutableComposition我用来将一些视频剪辑与一些CALayer在它们之上动画的 s 组合起来的。

当我拿起我的AVMutableComposition并将它与一个AVSynchronizedLayer用于播放的AVPlayerLayer. 视频正确显示,所有内容都位于应有的位置。

我的问题是,当我尝试导出这个东西时,我尝试使用AVVideoCompositionCoreAnimationTool而不是AVSynchronizedLayer(这就是文档所说的我们应该用于导出的内容)和 AVAssetExportSession,但是出现了问题,因为在我导出的电影中,每个CALayer都有它的坐标系反转。

因此,如果在播放期间,当我导出电影时,0,0 点位于屏幕的左上角,则 0,0 点位于左下角,因此我的动画会发疯。

我阅读了有关此的任何可能的文章,并且还从 Apple 下载了 AVVideoEdit 示例,但我只是看不到发生了什么...

4

2 回答 2

20

对于和我有同样问题的人,我终于找到了答案。在导出之前,您需要设置每个CALayer被调用的属性,一切都会好起来的。更多信息在这里geometryFlippedYES

于 2011-10-18T20:43:16.353 回答
-1
Methods that fixing frames and points
- (CGRect) fixRect:(CGRect)rect inRect:(CGRect)container
{
    CGRect frame = rect;
    frame.origin.y = container.size.height - frame.origin.y - frame.size.height;
    return frame;
}
- (CGPoint) fixPoint:(CGPoint)point fromPoint:(CGSize)containerSize
{
    CGPoint frame = point;
    frame.y = containerSize.height - frame.y;
    return frame;
}
于 2012-07-05T14:30:27.913 回答