如何通过AVAssetExportSession导出视频资产在纵向模式(how to export

2019-06-23 10:06发布

当我通过AVAssetExportSession导出视频资源的结果文件是解构模式。 (文件通过itune-> apps-抓起>文件sharing->我的应用程序)。 我怎么可以导出肖像模式(将其旋转)的视频资产?

Answer 1:

从iPhone捕捉设备传来的视频总是景观导向不管使用什么设备取向时捕获。

如果你想旋转你的视频中,“简单”的解决办法是分配一个转换到出口会话的视频轨道。

创建你的AVComposition对象2个可变轨迹:

AVMutableCompositionTrack *videoTrack = [composition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
AVMutableCompositionTrack *audioTrack = [composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];

添加您的媒体轨道构图的曲目:

...        
BOOL videoResult = [videoTrack insertTimeRange:sourceCMTime 
                                       ofTrack:[tracks objectAtIndex:0] 
                                        atTime:currentTime 
                                         error:&error];

BOOL audioResult = [audioTrack insertTimeRange:sourceCMTime 
                                       ofTrack:[tracks objectAtIndex:0] 
                                        atTime:currentTime 
                                         error:&error];
...

当你添加了所有的曲目,你的应用转换为构图的视频轨道:

    CGAffineTransform rotationTransform = CGAffineTransformMakeRotation(M_PI_2);
//    CGAffineTransform rotateTranslate = CGAffineTransformTranslate(rotationTransform,360,0);
    videoTrack.preferredTransform = rotationTransform;

(是carful是变换了左上角为原点,所以在旋转后需要翻译,但iPhone 4S的,的iOS 5.1测试,似乎旋转现在围绕中心做。)



Answer 2:

当U变换轨道同时应设置组合物renderSize因为它可能出帧或与黑块出现:

self.mutableVideoComposition.renderSize = CGSizeMake(assetVideoTrack.naturalSize.height,assetVideoTrack.naturalSize.width);


文章来源: how to export video asset via AVAssetExportSession in portrait mode