AVSynchronizedLayer与AVAssetExportSession输出不匹配,为什么?

时间:2012-08-23 02:36:39

标签: iphone ios avfoundation avassetwriter avcomposition

问题是:我有一个AVMutableVideoComposition,它有一个titleLayer(CATextLayer)。

我想使用AVPlayerLayer和AVSynchronizedLayer向用户显示包含此标题的预览。我设置了这样的图层:

    - (CATextLayer*)buildTitleLayer {
    CATextLayer *titleLayer = [CATextLayer layer];
    // titleLayer.font = @"Helvetica";
    titleLayer.fontSize = 15.0;
    //?? titleLayer.shadowOpacity = 0.5;
    titleLayer.backgroundColor = [UIColor blackColor].CGColor;
    titleLayer.alignmentMode = kCAAlignmentCenter;
    titleLayer.frame = CGRectMake(0, 0, _videoSize.width, _videoSize.height / 6); //You may need to adjust this for proper display
    return  titleLayer;
}

当我设置合成时,我这样做:

    [compositionVideoTrack setPreferredTransform:clipVideoTrack.preferredTransform];

一切都按预期运行,但有一个例外:

当我在iPhone模拟器中预览最终结果(视频+标题)时,我得到了这个输出:

Notice the Hello Video Label on black background on the top of the view

当我使用AVAssetExportSession渲染视频时,我得到此输出(因此视频标签位于底部):

Notice the Hello Video Label on the bottom

有谁知道诀​​窍是什么?我错过了什么/做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:0)