我认为答案肯定是最好的选择,但它只是部分正确的。实际上,为了使其工作,我们还必须调整导出的渲染大小,翻转纵向轨道自然大小的高度和宽度。
我只是测试它,我也举AVFoundation编程指南 - 编辑部分,这说明实行什么是@dizy的答案,但有提到除了实际建议:
所有AVAssetTrack对象都有一个preferredTransform包含该资产追踪的方向信息的财产。只要资产轨道显示在屏幕上,就会应用此转换。在前面的代码中,将图层指令的变换设置为资产轨道的变换,以便在您调整渲染大小后,新构图中的视频将正确显示。
的代码应该是这样的一个,然后(只是两行补充):
// Grab the source track from AVURLAsset for example.
AVAssetTrack *assetVideoTrack = [asset tracksWithMediaType:AVMediaTypeVideo].lastObject;
// Grab the composition video track from AVMutableComposition you already made.
AVMutableCompositionTrack *compositionVideoTrack = [composition tracksWithMediaType:AVMediaTypeVideo].lastObject;
// Apply the original transform.
if (assetVideoTrack && compositionVideoTrack) {
[compositionVideoTrack setPreferredTransform:assetVideoTrack.preferredTransform];
}
flippedSize = CGSize(compositionVideoTrack.naturalSize.height, compositionVideoTrack.naturalSize.width);
composition.renderSize = flippedSize;
// Export..
我也注意到还有,无论我做什么,这是发生。设置预先录制的方向,尝试旋转等。如果单独播放第一个剪辑,则曲目正面向上播放,但只要将其合并为合成作品,则会颠倒翻转。 – bgoers